(例如:當n為3時,有1^3 + 5^3 + 3^3 = 153,153即是n為3時的一個自冪數(shù))
n為1時,自冪數(shù)稱為獨身數(shù)。
n為2時,沒有自冪數(shù)。
n為3時,自冪數(shù)稱為水仙花數(shù)。
n為4時,自冪數(shù)稱為玫瑰花數(shù)。
n為5時,自冪數(shù)稱為五角星數(shù)。
n為6時,自冪數(shù)稱為六合數(shù)。
n為7時,自冪數(shù)稱為北斗七星數(shù)。
n為8時,自冪數(shù)稱為八仙數(shù)。
n為9時,自冪數(shù)稱為九九重陽數(shù)。
n為10時,自冪數(shù)稱為十全十美數(shù)。
/*
* 自冪數(shù)
* 自冪數(shù)是指一個 n 位數(shù),它的每個位上的數(shù)字的 n 次冪之和等于它本身。
* (例如:當n為3時,有1^3 + 5^3 + 3^3 = 153,153即是n為3時的一個自冪數(shù))
*/
import java.util.Scanner;
public class 自冪數(shù) {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入您所要查的自冪數(shù)位數(shù):");
int n = input.nextInt();// 接收數(shù)字位數(shù)
// 定義一數(shù)字number,從10^(n-1)開始自加,到10^n結(jié)束
switch (n) {
case 1:
System.out.println("獨身數(shù):");
System.out.print("0" + "\t");
break;
case 2:
System.out.println("兩位自冪數(shù):");
System.out.println("沒有自冪數(shù)!");
break;
case 3:
System.out.println("水仙花數(shù):");
break;
case 4:
System.out.println("玫瑰花數(shù):");
break;
case 5:
System.out.println("五角星數(shù):");
break;
case 6:
System.out.println("六合數(shù):");
break;
case 7:
System.out.println("北斗七星數(shù):");
break;
case 8:
System.out.println("八仙數(shù):");
break;
case 9:
System.out.println("九九重陽數(shù):");
break;
case 10:
System.out.println("十全十美數(shù):");
break;
default:
System.out.println("其它自冪數(shù):");
break;
}
for (int number = (int) Math.pow(10, n - 1); number < Math.pow(10, n); number++) {
// 判斷條件:數(shù)字number的位數(shù)為n
if (String.valueOf(number).length() == n) {
double num = 0;
for (int i = 0; i < n; i++) {
int temp = (int) (number / Math.pow(10, i)) % 10;
num += Math.pow(temp, n);
}
if (number == num) {
System.out.print(number + "\t");
}
}
}
input.close();
}
}