如何用c语言编程找1000以内的所有 水莲花数(阿姆斯特朗数)

如何用c语言编程找1000以内的所有 水莲花数(阿姆斯特朗数),第1张

#include<stdio.h>

int main()

{

int i,t,k,a[3]

printf("There are follwing armstrong number smaller than 1000:\n")

for(i=2i<1000i++) /*穷举要判定的数i的取值范围2~1000*/

{

for(t=0,k=1000k>=10t++) /*截取整数i的各位(从高向低位)*/

{

a[t]=(i%k)/(k/10)/*分别赋于a[0]~a[2}*/

k/=10

if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i)

/*判断i是否为阿姆斯特朗数*/

printf("%5d",i)/*若满足条件,则输出*/

}

printf("\n")

}

*运行结果

There are following armstrong number smaller than 1000:

153 370 371 407

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。(当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。)

#include<stdio.h>

int main()

{

int i,t,k,a[4]

printf("There are follwing armstrong number smaller between 2345 to 4567:\n")

for(i=2345i<4567i++) /*穷举要判定的数i的取值范围2345~4567*/

{

for(t=0,k=10000k>=10t++) /*截取整数i的各位(从高向低位)*/

{

a[t]=(i%k)/(k/10)/*分别赋于a[0]~a[3]*/

k=k/10

}

if(a[0]*a[0]*a[0]*a[0]+a[1]*a[1]*a[1]*a[1]+a[2]*a[2]*a[2]*a[2]+a[3]*a[3]*a[3]*a[3]==i)/*判断i是否为阿姆斯特朗数*/

printf("%5d",i)/*若满足条件,则输出*/

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11615873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存