阿姆斯壯數(Armstrong Number),又稱自戀數或水仙花數,指一個 n 位數等於其各位數字 n 次方之和。本程式找出所有三位數(100~999)的阿姆斯壯數。
三位數 abc 滿足:a³ + b³ + c³ = 100a + 10b + c。
#include <stdio.h>
int main()
{
int i, a, b, c;
for(i = 100; i <= 999; i++)
{
a = i % 10; // 個位
b = i / 10 % 10; // 十位
c = i / 100; // 百位
if(a*a*a + b*b*b + c*c*c == i)
{
printf("%d is Armstrong.\n", i);
}
}
return 0;
}
四個三位數阿姆斯壯數:
153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153
370 = 3³ + 7³ + 0³ = 27 + 343 + 0 = 370
371 = 3³ + 7³ + 1³ = 27 + 343 + 1 = 371
407 = 4³ + 0³ + 7³ = 64 + 0 + 343 = 407

bool isArmstrong(int n) {
int original = n, sum = 0, digits = 0, temp = n;
while(temp) { digits++; temp /= 10; }
temp = n;
while(temp) { sum += pow(temp % 10, digits); temp /= 10; }
return sum == original;
}
115,132,219,018,763,992,565,095,597,973,971,522,401。