首先,我们所要做的第一步为先理解什么是水仙花数;所谓水仙花数,是指一个三位正整数,其各位数字的立方和等于该整数本身。
如:1*1*1+5*5*5+3*3*3=153。
问题: 编程求出所有的水仙花数。
这里可以用两种循环语句(do while语句/for循环语句)可以进行计算;但大体的思维逻辑是先表达出个位,十位,百位数。然后让他满足1*1*1+5*5*5+3*3*3=153这个条件。
下面先用do while循环语句进行写作(这里需要注意的是调用了一个数学的函数库,即数据库中的pow幂函数):
代码如下
#include <iostream>
using namespace std;
#include <math.h> //调用数算函数库
int main()
{
int num = 100;
//num%10 个位数;num/10%10 十位数;num/100 百位数;
do
{
if (pow(num%10,3) + pow(num / 10 % 10,3) + pow(num / 100,3) == num)
//pow(主体,幂的次方)
//对应个位数的三次方+十位数的三次方+百位数的三次方
{
cout << num << endl; //输出水仙花数
}
num++; //进行num=num+1
} while (num < 1000); //判断语句,判断是三位数
}
输出结果如下图
当用for循环语句写的时候,逻辑与do while的是一个逻辑的;
代码如下:
#include <iostream>
using namespace std;
#include <math.h>
int main()
{
for (int n=100; n<1000; n++)
{
if (pow(n % 10, 3) + pow(n / 10 % 10, 3) + pow(n / 100, 3) == n)
{
cout << n << endl;
}
}
这两种方法都可以运行出水仙花数来,按自己需求写,就欧克了。。