設該整數為 n:
n + 100 = x²n + 268 = y² (100+168=268)y² - x² = 168 → (y-x)(y+x) = 168#include <stdio.h>
#include <math.h>
int main(void) {
for (long n = 1; n < 100000; n++) {
long x = sqrt(n + 100);
long y = sqrt(n + 268);
if (x*x == n + 100 && y*y == n + 268)
printf("%ld\n", n);
}
return 0;
}
21 261 1581
因式分解 168 = 2³ × 3 × 7,列舉因子對 (d, 168/d) 同奇偶性者,解得 y = (d + 168/d)/2、x = (168/d - d)/2,再反推 n = x² - 100。僅需檢查少數因子對,效率大幅提升。