#include <iostream>
using namespace std;
//写一个函数求两个数的最大公约数,运用了辗转相除法
int gcd(int a, int b) {
if (a % b == 0)
return b;
else if (a % b > b)
return gcd(a % b, b);
else
return gcd(b, a % b);
}
int main() {
int x, y, cnt = 0;//输入的x是最大公约数,y是最小公倍数
cin >> x >> y;
int ans = y / x;//ans为两个数除以最大公约数后两个数的乘积
if (y % x == 0) {//如果输入的y能整除x,说明有两个数能同时以x为最大公约数,以y为最小公倍数
//求出两个数相乘能得到ans,并且这两个数的最大公约数为一的组合有多少个
for (int i = 1; i <= ans; i++) {
if (ans % i == 0) {
if (gcd(i, ans / i) == 1)
cnt++;
}
}
}
cout << cnt;
return 0;
}
每日一题(最大公约数和最小公倍数的问题)
最新推荐文章于 2025-04-29 15:56:34 发布