打印阿姆斯特朗数

来源:百度知道 编辑:UC知道 时间:2024/07/03 08:02:01
如果一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数。如 407=43+03+73 就是一个阿姆斯特朗数。编程,输入正整数的位数 n ( n<10 ),输出 n 位正整数中的所有阿姆斯特朗数 , 若不存在阿姆斯特朗数,则输出: No output

输入: 正整数的位数 n

输出: 所有阿姆斯特朗数

例如:
输入:3
输出:153/370/371/407
可以给解释一下吗?

//---------------------------------------------------------------------------

#include <stdio.h>
#include <math.h>

int ch(int x)/*检查x是不是符合条件的数*/
{
int y=0,tx=x ;
while (tx){/*这个while循环用于计算x的各位数字的立方和*/
y+=pow(tx%10,3);
tx/=10;
}
if (y==x) {/*如果立方和y等于x,则说明这是一个符合条件的数*/
printf("%d\t",x);/*输出*/
return 1;/*返回1*/
}
return 0;/*否则返回0,不输出*/
}
int main(void)
{
int n,i,c=0;
scanf("%d",&n);
for (i=(int)pow(10,n-1); i < (int)pow(10,n); i++) {
c+=ch(i);/*c用于判断在指定的范围内有没有符合条件的数,如果c等于0,则表明在指定的范围内没有符合条件的数*/
}
if (!c) {/*如果c等于0则输出相应的提示信息*/
printf("No output \n");
}
return 0;
}
//---------------------------------------------------------------------------