/** * 水仙花數(Narcissistic number)也被稱爲超徹底數字不變數(pluperfect digital invariant, * PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number); 水仙花數是指一個 n 位數(n≥3 ),它的每一個位上的數字的 * n 次冪之和等於它自己(例如:1^3 + 5^3+ 3^3 = 153)。 水仙花數只是自冪數的一種,嚴格來講3位數的3次冪數才稱爲水仙花數。 * 附:其餘位數的自冪數名字 * 一位自冪數:獨身數 * 兩位自冪數:沒有 * 三位自冪數:水仙花數 * 四位自冪數:四葉玫瑰數 * 五位自冪數:五角星數 * 六位自冪數:六合數 * 七位自冪數:北斗七星數 * 八位自冪數:八仙數 * 九位自冪數:九九重陽數 * 十位自冪數:十全十美數 * * @author idea-pcfff * */ public class Narcissistic { /** * 計算 8位之內的自冪數 * @param weishu */ public static void armstrongLessThan8Bit(int weishu) { int max = (int) Math.pow(10, weishu) - 1; int num = (int)Math.pow(10, weishu-1); int a[] = new int[weishu]; System.out.print(weishu + "位的水仙花數有:\t"); while (num <= max) { int sum = 0; for (int i = 0; i < weishu; i++) { a[i] = num / (int) Math.pow(10, weishu - i - 1) % 10; } for (int i = 0; i < weishu; i++) { sum = sum + (int) Math.pow(a[i], weishu); } if (num == sum) { System.out.print(num + "\t"); } num++; } } public static void main(String[] args) { armstrongLessThan8Bit(3); } }