c语言学习:【3】求水仙花数(c语言学习)。

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153),下面我就简单介绍下如何求水仙花数

材慢今标怀增洋货林曲率既料/工具

电脑

方法

方法一
#include <stdio.h>
#include <math.h>
int main()
{
int i,m,sum;
for(i=100;i<1000;i++)
{
sum=0;
m=i;
do
{
sum=sum+pow(m%10,3);//pow(a,b)是指a的b次幂是double型的
m=m/10;
}
w实hile(m!=0);
if(sum==i)
printf("%d ",i);
}
printf("\n");
return 0;
}
运行结果:
153 370 371 407
Press any key to continue

方法二
#include <stdio.h>
int main()
{
int i,j,k,n;
printf("水仙花数:",n);
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n-i*100-j*10轴州小盾固资读银玉;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d\n ",n);
}
return 0;
}
失绍沙排识笑制难火味结果:
水仙花数:153
370
371
407

方法三
#include <stdio.h>
int main()
{
int i,j,k,n;
printf("水仙花数:",n);
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d\n ",n);
}
return 0;
}
输出结果:
水仙花数:153
370
371
407