水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
下面将用C语言实现三位数的水仙花数
#include<stdio.h>
#include<math.h>
#define N 1e3 //明示一个常量N为1000,方便以后更改代码
//如:若想要四位数的水仙花数则可以将1000改成10000或者1e4
int main() //在c语言中,xen表示的是x乘以10的n次方
{ int i;
for(i=100;i<N;i++)
{
int number = i; //用于替i做运算,而不改变i的值
int daffodi=0; //注:记得赋值该变量为0,才能
//在每次执行while循环前初始化为0
while(number !=0)
{
int t;
t = number%10; //number对10取余就可以得到个位的数字
number /=10; /*上面取到个位数后,利用整型int不能存储小数的性质
来将前一位处的数字移动到个位上 如:int i=123
i /10= 12,数字3就被计算机无情丢掉了*/
daffodi += pow(t,3);//对获取的每位数求立方后相加
//注意pow(x,n)是用于计算x的n次方,
} //使用前最好预处理<math.h>
if(daffodi==i) //判断每位数立方和是否等于原数,如果是
{ //则该输出该水仙花数,注意判断相等的时用==而不是=
printf("%d\n",i);
}
}
}
如有疑问欢迎私信博主;