三位數中,各位數字立方和等於該數本身:
abc = a³ + b³ + c³
例如:371 = 3³ + 7³ + 1³ = 27 + 343 + 1 = 371
public class Print {
public void output() {
System.out.println("100~999 之間的水仙花數:");
for (int i = 100; i <= 999; i++) {
int gw = i % 10; // 個位
int sw = i / 10 % 10; // 十位
int bw = i / 100; // 百位
if (i == gw*gw*gw + sw*sw*sw + bw*bw*bw) {
System.out.println(i);
}
}
}
}
public class TestPrint {
public static void main(String[] args) {
Print p = new Print();
p.output();
}
}
100~999 之間的水仙花數: 153 370 371 407

| 數字 | 百位³ | 十位³ | 個位³ | 總和 |
|---|---|---|---|---|
| 153 | 1³=1 | 5³=125 | 3³=27 | 153 ✓ |
| 370 | 3³=27 | 7³=343 | 0³=0 | 370 ✓ |
| 371 | 3³=27 | 7³=343 | 1³=1 | 371 ✓ |
| 407 | 4³=64 | 0³=0 | 7³=343 | 407 ✓ |
public static void printNarcissistic(int digits) {
int start = (int) Math.pow(10, digits - 1);
int end = (int) Math.pow(10, digits) - 1;
for (int i = start; i <= end; i++) {
int sum = 0;
int temp = i;
while (temp > 0) {
int digit = temp % 10;
sum += Math.pow(digit, digits);
temp /= 10;
}
if (sum == i) System.out.println(i);
}
}
// 呼叫:printNarcissistic(3) → 153, 370, 371, 407
// printNarcissistic(4) → 1634, 8208, 9474
public static void printNarcissisticFast(int digits) {
// 預計算 0^d ~ 9^d
int[] pow = new int[10];
for (int d = 0; d <= 9; d++) {
pow[d] = (int) Math.pow(d, digits);
}
int start = (int) Math.pow(10, digits - 1);
int end = (int) Math.pow(10, digits) - 1;
for (int i = start; i <= end; i++) {
int sum = 0;
int temp = i;
while (temp > 0) {
sum += pow[temp % 10];
temp /= 10;
}
if (sum == i) System.out.println(i);
}
}
n × 9ⁿ,當 n ≥ 60 時 n × 9ⁿ < 10ⁿ⁻¹,故自戀數有限個 (共 88 個)115132219018763992565095597973971522401