C趣味程序(二)(09)三位水仙花數(shù)

字號:

2.3 自方冪數(shù)
     一個n位正整數(shù)如果等于它的n個數(shù)字的n次方和,該數(shù)稱為n位自方冪數(shù)。
     三位自方冪數(shù)又稱水仙花數(shù)。
     四位自方冪數(shù)又稱玫瑰花數(shù)。
     五位自方冪數(shù)又稱五角星數(shù)。
     六位自方冪數(shù)又稱六合數(shù)。
     試求出所有3~6位自方冪數(shù)。
    2.3.1 三位水仙花數(shù)
    1、算法分析
     求自方冪數(shù)采用窮舉判定法。求n位自方冪數(shù),對所有n位整數(shù)一 一判定,如果其數(shù)字的n次方和等于它自身,則打印輸出。
     求n個數(shù)字的n次方和,常見有以下兩種方法:
    1)設置n重循環(huán),每位數(shù)設置循環(huán);位從1~9,其余各位數(shù)從0~9。n個數(shù)字的n次方的和即n個循環(huán)變量的n次方和。
    2)從最小的n位數(shù)至的n位數(shù)循環(huán),對每一個n位數(shù)分離其各個數(shù)字,然后求數(shù)字的n次方和。
     兩種方法從循環(huán)次數(shù)來說是一樣的,前者實施起來較為簡便。
    程序代碼如下:
    #include
    void main()
    {
     int i,j,k,m1,m2;
     for(i=1;i<=9;i++)
     for(j=0;j<=9;j++)
     for(k=0;k<=9;k++)
     {
     m1=i*100+j*10+k; /*m1為三個數(shù)字分別為i,j,k的三位數(shù)*/
     m2=i*i*i+j*j*j+k*k*k; /*m2為三個數(shù)字的立方和*/
     if(m1==m2) printf("%3d ",m1); /*輸出滿足水仙花條件的數(shù)*/
     }
     printf("\n");
    }
    程序運行結(jié)果:
    水仙花數(shù)有:
    153 370 371 407