用c++求所有水仙花数
- 提问者网友:暮烟疏雨之际
- 2021-05-14 12:26
- 五星知识达人网友:山君与见山
- 2021-05-14 14:03
#include <iostream>
using namespace std;
int main()
{
int i, a, b, c;
for(i = 100; i < 1000; ++i)
{
a = i / 100; //百位数
b = i / 10 % 10; //十位数
c = i % 10; //个位数
if(a * a * a + b * b * b + c * c * c == i)
cout << i << endl;
}
return 0;
}
- 1楼网友:蕴藏春秋
- 2021-05-14 14:12
方法:先弄懂什么是水仙花数:: 水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。 3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环) 再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9那么用10*b或者10*c来表示十位;那么下面用c或者b来表示个位; if(100*a+10*b+c==a*a*a+b*b+c) 如果满足这个条件那么:输出的printf("%d%d%d",a,b,c)就是3位数的水仙花数: 4位水仙花数方法同上: 刚写的:调试过了 #include <stdio.h> int main(void) { int a,b,c,d; system("cls"); for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) if(100*a+10*b+c==a*a*a+b*b*b+c*c*c) printf("%d%d%d\n",a,b,c); for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d) printf("%d%d%d%d\n",a,b,c,d); getch(); } 或者这样: #include <stdio.h> int main(void) { int a,b,c,d; system("cls"); for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) { if(100*a+10*b+c==a*a*a+b*b*b+c*c*c) printf("%d%d%d\n",a,b,c); for(d=0;d<=9;d++) if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d) printf("%d%d%d%d\n",a,b,c,d); } getch(); }