输出所有的水仙花数

it2026-04-08  5

自幂数,是指一个n位数,它的每个位上的数字的 n 次幂之和等于它本身,当n为3时,称为水仙花数。

C语言代码实现:

//方法一: #include<stdio.h> #include<math.h> int main( ) { for (int num = 100; num < 1000; num++) { int count = 0;//创建一个int变量用来存放每一位的数字 int sum = 0; int temp = 0;//创建一个变量用来临时存放num的值,代替num完成下面的循环运算 temp = num; //用一个三次循环分别分解出三位数每一位上的数字 for (int i = 100; i >0; i =i/ 10) { count = temp/ i; temp= temp % i; sum += pow(count, 3);//求三个数的立方和 } //如果这个三位数和其各位立方和相等,那么这个三位数就是一个水仙花数 if (num==sum) printf("%d\n", num); } return 0; } //这个方法较为繁琐笨重,使用了两个for循环,时间复杂度高,简单方法请看下面的方法二。 //方法二 #include<stdio.h> int main() { int i, j, k, num; for (num = 100; num < 1000; num++) { i = num / 100;//求出三位数的百位上的数字 j = num / 10 % 10;//求出十位 k = num % 10;//求出个位 if (num == i * i * i + j * j * j + k * k * k) { printf("%d\n", num); } } return 0; }

运行结果:

最新回复(0)