三位數 abc,滿足 a³ + b³ + c³ = abc。範圍 100~999。
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);
}
// 153 370 371 407
#includefor (int n = 100; n < 1000; n++) { int sum = 0, m = n; while (m) { sum += pow(m % 10, 3); // pow 回傳 double,隱式轉 int 可能 152.9999→152 m /= 10; } if (sum == n) printf("%d ", n); } // 建議: sum += (int)round(pow(...)) 或自寫 ipow
int a = n/100; int b = (n - a*100)/10; int c = n - a*100 - b*10;
只有 4 個:153, 370, 371, 407。
int ipow(int base, int exp) {
int r = 1;
while (exp--) r *= base;
return r;
}
void find_armstrong(int digits) {
int start = ipow(10, digits-1);
int end = ipow(10, digits);
for (int n = start; n < end; n++) {
int sum = 0, m = n;
while (m) { sum += ipow(m%10, digits); m/=10; }
if (sum == n) printf("%d ", n);
}
}
// 4位: 1634, 8208, 9474