打印本文 打印本文  关闭窗口 关闭窗口  
C趣味程序百例(07)阿姆斯特朗数
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:59:21  文章录入:杜斌  责任编辑:杜斌

23.阿姆斯特朗数
    如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。
如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。
*题目分析与算法设计
    可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。
*程序说明与注释
#include<stdio.h>
void main()
{
    int i,t,k,a[3];
    printf("There are follwing Armstrong number smaller than 1000:\n");
    for(i=2;i<1000;i++)         /*穷举要判定的数i的取值范围2~1000*/
    {
        for(t=0,k=1000;k>=10;t++)     /*截取整数i的各位(从高向低位)*/
        {
            a[t]=(i%k)/(k/10);        /*分别赋于a[0]~a[2}*/
            k/=10;
        }
        if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i)
                                       /*判断i是否为阿姆斯特朗数*/
            printf("%5d",i);            /*若满足条件,则输出*/
        
    }
    printf("\n");
}
*运行结果
    There are following Armstrong number smaller than 1000:
      153        370        371        407
打印本文 打印本文  关闭窗口 关闭窗口