题目描述
输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数
条件:
1.P,Q是正整数
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.
输入输出格式
输入格式:
二个正整数x0,y0。
输出格式:
一个数,表示求出满足条件的P,Q的个数。
输入输出样例
输入样例1:
3 60
输出样例1:
4
样例说明
样例中P,Q有4种
(3 60) (15 12) (12 15) (60 3)
数据规模与约定
对于100%的数据,x0,y0(2<=x0<100000,2<=y0<=1000000)。
测试网站
https://www.luogu.org/problemnew/show/P1029
#include <iostream>
using namespace std;
int x0,y0;
int cnt;
/*
P%x0=0
Q%x0=0
prime(P,Q)==x0
y0%P==0
y0%Q==0
p*Q/x0==y0
*/
int prime(int a,int b) {
while(b!=0) {
int r=a%b;
a=b;
b=r;
}
return a;
}
int main() {
cin>>x0>>y0;
if(y0%x0!=0) {
cout<<"0";
return 0;
}
for(int i=x0; i<=y0; i++) {
for(int j=x0; j<=y0; j++) {
if(i*j/x0==y0&&prime(i,j)==x0) {
// cout<<i<<" "<<j<<endl;
cnt++;
}
}
}
cout<<cnt;
return 0;
}