三位數 abc,若 a³ + b³ + c³ = abc,則為水仙花數 (阿姆斯特朗數)。
#include
int main() {
printf("三位數水仙花數:\n");
for (int n = 100; n < 1000; n++) {
int a = n / 100; // 百位
int b = (n / 10) % 10; // 十位
int c = n % 10; // 個位
if (a*a*a + b*b*b + c*c*c == n)
printf("%d ", n);
}
printf("\n");
return 0;
}
三位數水仙花數: 153 370 371 407
bool isArmstrong(int n) {
int original = n, digits = 0, sum = 0;
while (n > 0) { digits++; n /= 10; }
n = original;
while (n > 0) {
int d = n % 10;
int p = 1;
for (int i = 0; i < digits; i++) p *= d;
sum += p;
n /= 10;
}
return sum == original;
}