《摘自C语言名题精选百则》
题目:在3位的正整数中,比如abc,有一些可以满足a^3+b^3+c^3=abc的条件,也就是说,各个位数的立方和正好是该数的本身,这些数就叫做Armstrong数。试写一个程序求出所有3位的Armstrong数。
我的想法是:遍历所有的三位数,检验其是否为Armstrong数。
程序如下:
#include <stdio.h>
int main(int argc, char *agrv[])
{
int i;
for(i = 100; i < 1000; i++)
{
if(armstrong(i) == 1)
{
printf("%d\n", i);
}
}
return 0;
}
int armstrong(int x)
{
int a = x/100;
int b = (x%100) / 10;
int c = x%10;
if(a < 1)
{
return 0;
}
if(a*a*a + b*b*b + c*c*c == x)
{
return 1;
}
else
{
return 0;
}
}
参考书中给的方法有一种跟我写的程序想法相同,另外一个想法是通过三重for循环遍历,然后拼凑三位数,检验是否满足Armstrong的条件,这里不在赘述了。