C++11 实现求解最大公约数和最小公倍数的P和Q个数
C++11 实现求解最大公约数和最小公倍数的P和Q个数
本程序使用 C++11 语言实现,旨在求解给定两个正整数 x 和 y,满足以 x 为最大公约数,以 y 为最小公倍数的正整数对 P 和 Q 的个数。
程序包含最大公约数 (gcd) 和最小公倍数 (lcm) 的计算函数,以及统计满足条件的 P 和 Q 个数的 countPQ 函数。
代码实现
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int countPQ(int x, int y) {
int count = 0;
int lcmVal = lcm(x, y);
for (int i = x; i <= lcmVal; i += x) {
if (lcmVal % i == 0 && gcd(i, lcmVal / i) == x) {
count++;
}
}
return count;
}
int main() {
int x, y;
cin >> x >> y;
int result = countPQ(x, y);
cout << result << endl;
return 0;
}
使用方法
输入两个正整数 x 和 y,程序将输出满足条件的 P 和 Q 个数。
示例
输入:3 60
输出:4
原文地址: https://www.cveoy.top/t/topic/ppmM 著作权归作者所有。请勿转载和采集!