水仙花数
什么是水仙花数?
水仙花数是指一个 3 位数,它的每个数位上的数字的 3 次幂之和等于它本身的一个数
例:1^3 + 5^3+ 3^3 = 153
解题思路
我们需要对每个三位数进行拆分计算,将符合水仙花数的数输出到控制台
对于所有三位数,我们可以知道,是 100~999 之间的数字
可以使用 for 循环或者 while循环解题
for 循环
for (int i = 100; i <= 999; i++)
{
}
while 循环
int j = 100;
while (j != 1000)
{
j++;
}
拆解数字
三位数的表示搞定了,那数字拆分呢?
很简单,只需要使用运算符就能解决就行
获取百位
int num_100 = i / 100;
获取十位
int num_10 = i % 100 / 10;
获取个位
int num_1 = i % 100 % 10;
这样就实现了对每个三位数各个位置的数的获取
接下来就是求这三个数的 3 次幂之和了
int sum = (num_100 * num_100 * num_100) + (num_10 * num_10 * num_10) + (num_1 * num_1 * num_1);;
求完和,就到了对比环节,使用 if 判断句进行判断,若相同就输出,不相同不进行任何操作
if (sum == i)
{
cout << i << endl;
}
运行结果:
至此,程序完成!
完整代码:
#include <iostream>
using namespace std;
int main()
{
for (int i = 100; i <= 999; i++)
{
int num_100 = i / 100;
int num_10 = i % 100 / 10;
int num_1 = i % 100 % 10;
int sum = (num_100 * num_100 * num_100) + (num_10 * num_10 * num_10) + (num_1 * num_1 * num_1);;
if (sum == i)
{
cout << i << endl;
}
}
/*int j = 100;
while (j != 1000)
{
j++;
}*/
system("pause");
return 0;
}