หาคู่ตัวเลขที่ไม่ซ้ำกัน สมาชิก ≤ N และตรงเงื่อนไข:
- กำลังสองของความต่าง = LCM ของสองจำนวน
- HCF ของสองจำนวน = ผลคูณของจำนวนสองจำนวนติดกัน
วิธีแก้: ใช้จำนวนติดกัน Z, Z+1 หาผลคูณ Z(Z+1) หาตัวคูณของผลคูณนี้ ตรวจสอบเงื่อนไขที่ 1 ได้คู่คือ Z×Z(Z+1) และ (Z+1)×Z(Z+1)
เงื่อนไข ≤ N: (Z+1)×Z(Z+1) ≤ N → Z³ + 2Z² + Z ≤ N
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
int main() {
int N = 489, pairs, i = 1;
while((i*i*i) + (2*i*i) + i <= N) i++;
pairs = i;
cout << "Pairs :" << endl;
for(int j = 1; j < pairs; j++) {
cout << j*(j*(j+1)) << " " << (j+1)*(j*(j+1)) << endl;
}
return 0;
}
ผลลัพธ์
Pairs : 2 4 12 18 36 48 80 100 150 180 252 294 392 448