题目描述输入两个正整数 xy求出满足下列条件的P和Q的个数: P和Q是正整数。要求P和Q以 x 为最大公约数以 y 为最小公倍数。试求:满足条件的所有可能的P和Q的个数。输入格式一行两个正整数 xy。输出格式一行一个数表示求出满足条件的 两个正整数PQ的个数。样例样例输入 #13 60样例输出 #14c++实现
#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;
}
``
原文地址: https://www.cveoy.top/t/topic/hGfP 著作权归作者所有。请勿转载和采集!