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

C++11 实现求解最大公约数和最小公倍数的P和Q个数

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

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