Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Ước nguyên tố

16:30 19-10-2023 283 lượt xem 1 bình luận

Cho hai số nguyên dương phân biệt a, b (a,b ≤1000). Hai số x, y thoả mãn x là ước của a, y là ước của b và x+y là số nguyên tố lớn nhất.                   

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Map170505 đã bình luận 14:34 23-10-2023

#include <iostream>
using namespace std;

bool is_prime(int n) {
    if (n < 2) return false;
    for (int i = 2; i * i <= n; ++i) {
        if (n % i == 0) return false;
    }
    return true;
}

int main() {
    int a, b;
    cin >> a >> b;

    int max_prime = -1;
    int x = -1, y = -1;
    for (int i = 1; i <= a; ++i) {
        if (a % i == 0) {
            int j = a / i;
            if (b % j == 0 && is_prime(i + j)) {
                if (i + j > max_prime) {
                    max_prime = i + j;
                    x = i;
                    y = j;
                }
            }
        }
    }

    if (x == -1 || y == -1) {
        cout << "Không tìm thấy hai số x, y thoả mãn yêu cầu." << endl;
    } else {
        cout << "Hai số x, y thoả mãn x là ước của a, y là ước của b và x+y là số nguyên tố lớn nhất là: " << x << ", " << y << endl;
    }

    return 0;
}
 

 

Câu hỏi mới nhất