原文「再加上168」經驗證無解,實際經典題目為「加100與加268(即再加168)皆為完全平方數」,即:
n + 100 = x²
n + 268 = y²
→ y² - x² = 168
→ (y-x)(y+x) = 168
因式分解 168 = 1×168, 2×84, 3×56, 4×42, 6×28, 7×24, 8×21, 12×14。
令 y-x = a, y+x = b,則 y=(a+b)/2, x=(b-a)/2 需為整數 → a,b 同奇偶。
符合條件的因子對:(2,84), (4,42), (6,28), (12,14)。
解得 n = x² - 100:
| a | b | x | y | n |
|---|---|---|---|---|
| 2 | 84 | 41 | 43 | 1581 |
| 4 | 42 | 19 | 23 | 261 |
| 6 | 28 | 11 | 17 | 21 |
| 12 | 14 | 1 | 13 | -99 (負數,視題意捨棄) |
正整數解:21, 261, 1581
#include <stdio.h>
#include <math.h>
int main()
{
printf("符合條件的數(n+100與n+268皆為完全平方數):\n");
for (int n = 1; n < 100000; n++) {
int x = (int)sqrt(n + 100);
int y = (int)sqrt(n + 268);
if (x*x == n+100 && y*y == n+268)
printf("%d (x=%d, y=%d)\n", n, x, y);
}
return 0;
}
符合條件的數:
21 (x=11, y=17)
261 (x=19, y=23)
1581 (x=41, y=43)