作者:不详 来源:互联网  酷勤网收集 2008-04-24

摘要
  一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。如 407=43+03+73就是一个阿姆斯特朗数。求1000以内的所有阿姆斯特朗数。用穷举法,依次取1000以内的各数i,将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。

如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。
如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。

*问题分析与算法设计
可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。

*程序说明与注释
#include<stdio.h>
int 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

分类: 题库中心 C/C++语言程序百例 算法艺术

上一篇:23.由两个平方三位数获得三个平方二位数   下一篇:25.完全数