输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1^3+5^3+3^3
#include <stdio.h> int main() { // 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。 // 例如,153是一水仙花数,因为153=1^3+5^3+3^3 int n; printf("请输入你想知道水仙花数的位数,n>=3\n"); scanf("%d",&n); //先知道求水仙花的范围 int range = 1; int i = 1; while(i<n){ range*=10; i++; } //printf("%d\n",range); //遍历range到range*10中的所有数字 i=range; while(i<range*10){ //用一个空盒子来装每次遍历的数字 int t = i; int sum = 0; while(t>0){ int d = t % 10; t /= 10; //用一个空盒子来装d的数字 int p = d; //计算每个位上的数字的N次幂之和 for(int j = 1;j<n;j++){ p *= d; } sum += p; } if(sum == i){ printf("%d位的水仙花数有:%d\n",n,i); } i++; } return 0; }