水仙花数算法

时间:2021-04-15 16:34:26

一 水仙花数
  所谓的水仙花数是指:一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如153,370,371,407等都是水仙花数,就拿153来说,153=1*1*1 + 5*5*5 + 3*3*3.
  满足上面的条件就是水仙花数,否则不是。在编写代码的过程中,重点是如何分解,如何表达出数字中的个位,十位,百位等。在这里定义三个整型(int)变量:int i,j,k,n; 这里的n代表数字的值,用i,j,k来分别表示该数n的个位,十位,百位。则可得:
  i = n%10; // 分解出个位
  j = n/10%10; // 分解出十位
  k = n/100; // 分解出百位

例题:在这里我编程实现求100~1000中的所有水仙花数。
     

#include<stdio.h>
int main() {
int i,j,k,n;
printf("Daffodil number:");
for(n=100;n<1000;n++) {
i = n%10;
j = n/10%10;
k = n/100;
if( k*100+j*10+i == i*i*i+j*j*j+k*k*k)
printf("%-6d", n);
}
return 0;
}

编译执行该代码,便可得出100~1000中所有的水仙花数分别为:
水仙花数算法

153 370 371 407