什么是水仙花数呢?
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗 数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
实现:当n=3是求其1000以内的水仙花数:
<span style="font-size:14px;">#include<stdio.h> int main() { int i; int a,b,c; int count = 0; for(i = 100;i<1000;i++) { a = i/100; b = i/10-a*10; c = i%10; if(a*a*a +b*b*b +c*c*c==i) printf("%d\n",i); } return 0; }</span>当要输出任意n位的水仙花数
<span style="font-size:14px;">#include<stdio.h> int func(int a,int b); int main() { int num = 0; int count = 0; scanf("%d",&num); for(int i=func(10,num-1);i<func(10,num);i++) { int sum = 0; int k = i; for(int j=1;j<=num;++j) { count = k%10; sum+=func(count,num); k/=10; } if(sum ==i) { printf("%d\n",i); } } return 0; } int func(int a,int b) { int m= 0; int sum = 1; for(int i=1;i<=b;i++) { sum*=a; } return sum; } </span>