![]() ![]() |
|
C趣味程序百例(07)阿姆斯特朗数 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 13:59:21 文章录入:杜斌 责任编辑:杜斌 | |
|
|
如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。 如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。 *题目分析与算法设计 可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。 *程序说明与注释 #include<stdio.h> void main() { int i,t,k,a[3]; printf("There are follwing Armstrong number smaller than 1000:\n"); for(i=2;i<1000;i++) /*穷举要判定的数i的取值范围2~1000*/ { for(t=0,k=1000;k>=10;t++) /*截取整数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 |
|
![]() ![]() |