簡介
自冪數是指一個 n 位數,它的每個位上的數字的 n 次冪之和等於它本身。
n為1時,自冪數稱為獨身數。顯然,0,1,2,3,4,5,6,7,8,9都是自冪數。
n為2時,沒有自冪數。
n為3時,自冪數稱為水仙花數,有4個:153,370,371,407;
n為4時,自冪數稱為四葉玫瑰數,共有3個:1634,8208,9474;
n為5時,自冪數稱為五角星數,共有3個:54748,92727,93084;
n為6時,自冪數稱為六合數, 只有1個:548834;
n為7時,自冪數稱為北斗七星數, 共有4個:1741725,4210818,9800817,9926315;
n為8時,自冪數稱為八仙數, 共有3個:24678050,24678051,88593477;
n為9時,自冪數稱為九九重陽數,共有4個:146511208,472335975,534494836,912985153;
n為10時,自冪數稱為十全十美數,只有1個:4679307774。
實現代碼
C++參考代碼
#include<iostream>using namespace std;int main(){ int a,b,c;//分別為百位、十位、個位數 for(a=1;a<10;a++) { for(b=0;b<10;b++) { for(c=0;c<10;c++) { if(a*100+b*10+c==a*a*a+b*b*b+c*c*c) { cout<<a*100+b*10+c<<"="<<a<<"^3+"<<b<<"^3+"<<c<<"^3"<<endl; } } } } return 0;} java參考代碼public class Exp2 { public static void main(String args[]) { Math1 m = new Math1(); int x=99999999;//遍歷10~99999999中的自冪數 int k=0; for (int i = 10; i <= x; i++){ if(i%(x/50)==0){ //列印遍歷完成進度。 k=k+2; System.out.print(k+"% "); } if (m.mishu(i) == true) System.out.println(i); } }}class Math1 { public boolean mishu(int x) { int k = 0; int[] s = chaifen(x); for (int i = 0; i < s.length; i++) { k=k+pingfang(s[i],s.length); } if(x==k) return true; else return false; } public int pingfang(int x, int y) { x = (int) Math.pow(x, y); // System.out.println(x); return x; } public int[] chaifen(int x) { int l = String.valueOf(x).length(); int[] s = new int[l]; for (int i = 0; i < l; i++) { // System.out.println("--------"+ (pingfang(10,(l-i-1)))); s[i] = x / (pingfang(10, (l - i - 1))) % 10; } return s; }}輸出結果:15337037140716348208947454748927279308454883417417252% 4% 42108186% 8% 9800817992631510% 12% 14% 16% 18% 20% 22% 24% 246780502467805126% 28% 30% 32% 34% 36% 38% 40% 42% 44% 46% 48% 50% 52% 54% 56% 58% 60% 62% 64% 66% 68% 70% 72% 74% 76% 78% 80% 82% 84% 86% 88% 8859347790% 92% 94% 96% 98% 100%