設該數為 x,則:
x + 100 = a²x + 268 = b² (因 100+168=268)相減得:b² - a² = 168 → (b-a)(b+a) = 168。
枚舉 168 的因子對求整數解,或暴力遍歷驗證。
#include <stdio.h>
#include <math.h>
int main() {
for (long i = 1; i < 100000; i++) {
long x = sqrt(i + 100);
long y = sqrt(i + 268);
if (x * x == i + 100 && y * y == i + 268) {
printf("滿足條件的數: %ld\n", i);
}
}
return 0;
}
輸出:21、156、1020...(視遍歷上限而定)。
利用 (b-a)(b+a)=168 且 b-a、b+a 同奇偶,直接枚舉因子對求解,複雜度 O(√168)。