三位數 abc 若滿足 a³ + b³ + c³ = abc,即為水仙花數(Narcissistic Number)。已知共有四個:153、370、371、407。
#include#include #include int main() { int a, b, c; for (int i = 100; i < 1000; i++) { a = i % 10; // 個位 b = i / 100; // 百位 c = (i - b * 100) / 10; // 十位 if (pow(b, 3) + pow(c, 3) + pow(a, 3) == i) { printf("%d ", i); } } system("pause"); return 0; }
math.h 提供浮點冪運算,回傳 double,比較時隱性轉型為 int。亦可改用整數乘法 a*a*a 避免浮點誤差。100 ~ 999 涵蓋所有三位數。if (b*b*b + c*c*c + a*a*a == i) // 更快、無浮點誤差
若要泛化至 N 位數,需動態計算位數與冪次,可結合 log10 或字串長度實作。