zhangwch • 1年前
若P = gcd ** k1,Q = gcd * * k2
那么x0就是gcd,y0就是gcd x k1 x k2
目标是把k1 x k2 分成两个数的乘积,分别给P和Q,同时保证k1和k2互质(否则gcd就会更大一点)
#include <iostream>
using namespace std;
int gcd(int x, int y) {
if (y == 0) return x;
return gcd(y, x % y);
}
int main() {
int x, y;
cin >> x >> y;
if (y % x != 0) {
cout << 0;
return 0;
}
int gd = x;
int k = y / x;
int cnt = 1;
for (int i = 2; i <= k / i; i++) {
if (k % i == 0) {
if (gcd(i, k / i) == 1) {
// cout << i << " " << k / i << " " << gcd(i, k/i) << endl;
cnt++;
}
}
}
cout << cnt * 2;
return 0;
}
评论: