《摘自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的条件,这里不在赘述了。