求满足最大公约数和最小公倍数条件的正整数对个数 - C++实现
{"title":"求满足最大公约数和最小公倍数条件的正整数对个数 - C++实现","description":"本题要求编写程序,输入两个正整数x和y,计算并输出满足以下条件的正整数对(p, q)的个数:p, q是正整数,且p, q以x为最大公约数,以y为最小公倍数。程序使用C++实现,并提供示例代码。","keywords":"最大公约数, 最小公倍数, 正整数对, C++实现, 算法题","content":""题目描述"\n"输入两个正整数 x,y,求出满足下列条件的p,q 的个数:\n\n p,q是正整数。\n\n要求 p,q以 x 为最大公约数,以 y 为最小公倍数。\n\n试求:满足条件的所有可能的 p,q 的个数。\n\n"输入格式"\n"一行两个正整数 x,y。\n\n"输出格式"\n"一行一个数,表示求出满足条件的 p,q 的个数。\n\n"样例"\n"样例输入 #1\n3 60\n样例输出 #1\n4"\nc++实现内容:cpp\n#include <iostream>\n\nusing namespace std;\n\n// 计算最大公约数\nint gcd(int a, int b) {\n if (b == 0) {\n return a;\n }\n return gcd(b, a % b);\n}\n\n// 计算最小公倍数\nint lcm(int a, int b) {\n return a * b / gcd(a, b);\n}\n\nint main() {\n int x, y;\n cin >> x >> y;\n\n int count = 0;\n\n // 遍历p的值,p的范围是[1, y / x]\n for (int p = 1; p <= y / x; p++) {\n // 如果p是x的约数且y是p的倍数\n if (x % p == 0 && y % (p * x) == 0) {\n count++;\n }\n }\n\n cout << count << endl;\n\n return 0;\n}\n
原文地址: https://www.cveoy.top/t/topic/pply 著作权归作者所有。请勿转载和采集!