Tìm các cặp (a,b) với a < b ≤ N thỏa mãn:
(a-b)² = LCM(a,b)HCF(a,b) = z(z+1)(tích 2 số liên tiếp)
Phân tích toán học
Đặt HCF = z(z+1). Khi đó a = z × HCF = z²(z+1), b = (z+1) × HCF = z(z+1)².
Kiểm tra điều kiện 1: (b-a)² = [z(z+1)² - z²(z+1)]² = [z(z+1)]² = HCF².
Mà LCM(a,b) = a×b/HCF = z²(z+1) × z(z+1)² / [z(z+1)] = z²(z+1)² = HCF². → Luôn thỏa mãn!
Điều kiện b ≤ N → z(z+1)² ≤ N.
Chương trình C++
#include <iostream>
using namespace std;
int main() {
long long N;
cout << "Nhap N: "; cin >> N;
cout << "Cac cap (a,b) thoa man:\n";
for (long long z = 1; ; z++) {
long long b = z * (z+1) * (z+1);
if (b > N) break;
long long a = z * z * (z+1);
cout << "(" << a << ", " << b << ") HCF=" << z*(z+1) << "\n";
}
return 0;
}
Kết quả (N=489)
Cac cap (a,b) thoa man: (2, 4) HCF=2 (12, 18) HCF=6 (36, 48) HCF=12 (80, 100) HCF=20 (150, 180) HCF=30 (252, 294) HCF=42 (392, 448) HCF=56