求满足最大公约数和最小公倍数条件的正整数对数量 - C++17 实现
"求满足最大公约数和最小公倍数条件的正整数对数量 - C++17 实现"\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++17实现内容:cpp\n#include <iostream>\n#include <cmath>\n\nusing namespace std;\n\nint gcd(int a, int b) {\n if (b == 0) {\n return a; \n }\n return gcd(b, a % b);\n}\n\nint lcm(int a, int b) {\n return a * b / gcd(a, b);\n}\n\nint countPairs(int x, int y) {\n int count = 0; \n int limit = sqrt(y);\n \n for (int i = 1; i <= limit; i++) {\n if (y % i == 0) {\n int p = i; \n int q = y / i; \n \n if (gcd(p, q) == x && lcm(p, q) == y) {\n count++;\n }\n }\n }\n \n return count * 2; \n}\n\nint main() {\n int x, y; \n cin >> x >> y; \n \n cout << countPairs(x, y) << endl; \n \n return 0; \n}\n
原文地址: https://www.cveoy.top/t/topic/ppmY 著作权归作者所有。请勿转载和采集!