阿姆斯特朗数:
如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。
如 407=4^3+0^3+7^3就是一个阿姆斯特朗数。试编程求大于1小于1000的所有阿姆斯特朗数。
(这个问题可以采用穷举法,从1开始循环,然后把每个数字的各个位数分解求阶乘之和,从而得到结果)
尽量缩减代码,使之紧凑,减少时间和空间复杂度。
#include <stdio.h>
int main()
{
int i,m,k,n;
for(n=1; n<=1000; ++n) //开始循环
{
k=n; //初始化
m=0;
while(k>0) //开始分解,求各个位数阶乘之和。
{
i=k%10;
m+=i*i*i;
k=k/10;
}
if(m==n&&m!=1) //判断是否符合
{
printf("%d ", m);
}
}
return 0;
}
这样一来可以说是极大的减少了空间复杂度,不浪费一点空间