#include <iostream>
#include <cmath>
using namespace std;

int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}

int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

int main() {
    int x, y;
    cin >> x >> y;

    int count = 0;
    int upper_limit = sqrt(y);
    for (int i = 1; i <= upper_limit; i++) {
        if (y % i == 0) {
            int p = i;
            int q = y / i;
            if (gcd(p, q) == x && lcm(p, q) == y) {
                if (p == q) {
                    count++;
                } else {
                    count += 2;
                }
            }
        }
    }

    cout << count << endl;

    return 0;
}
``
题目描述输入两个正整数 xy求出满足下列条件的P和Q的个数: P和Q是正整数。要求P和Q以 x 为最大公约数以 y 为最小公倍数。试求:满足条件的所有可能的P和Q的个数。输入格式一行两个正整数 xy。输出格式一行一个数表示求出满足条件的 两个正整数PQ的个数。样例样例输入 #13 60样例输出 #14c++实现

原文地址: https://www.cveoy.top/t/topic/hGfP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录