/** * 水仙花数(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); } }