Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm cặp số duy nhất thỏa mãn điều kiện LCM và HCF C++


Tìm các cặp (a,b) với a < b ≤ N thỏa mãn:

  1. (a-b)² = LCM(a,b)
  2. 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