三位數 abc 若滿足 a³ + b³ + c³ = abc,則為水仙花數。範圍 100~999。
原程式僅檢查 100~199,且使用兩個陣列分別儲存「是」與「否」的數字,記憶體浪費。改進版:
#include <stdio.h>
int main()
{
int count = 0;
printf("100~999 間的水仙花數:\n");
for (int i = 100; i <= 999; i++) {
int a = i % 10; // 個位
int b = i / 10 % 10; // 十位
int c = i / 100; // 百位
if (i == a*a*a + b*b*b + c*c*c) {
printf("%d ", i);
count++;
}
}
printf("\n共 %d 個水仙花數\n", count);
return 0;
}
100~999 間的水仙花數:
153 370 371 407
共 4 個水仙花數
| 數字 | 百位³ | 十位³ | 個位³ | 和 |
|---|---|---|---|---|
| 153 | 1 | 125 | 27 | 153 ✓ |
| 370 | 27 | 343 | 0 | 370 ✓ |
| 371 | 27 | 343 | 1 | 371 ✓ |
| 407 | 64 | 0 | 343 | 407 ✓ |
廣義水仙花數(Armstrong 數):n 位數各位 n 次方和等於自身。四位數有 1634, 8208, 9474 三個。