《摘自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 &lt; 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 &lt; 1)
    {
        return 0;
    }
    if(a*a*a + b*b*b + c*c*c == x)
    {
        return 1;
    }
    else
    {
        return 0;
    }

}

 

参考书中给的方法有一种跟我写的程序想法相同,另外一个想法是通过三重for循环遍历,然后拼凑三位数,检验是否满足Armstrong的条件,这里不在赘述了。