数学方法:gcd=3;lcm=60
P的质因子=A[...];Q的质因子=B[...]
gcd的质因子A∪B
lcm的质因子A∩B
P=x*P1的k1次方*P2的k2次方
*--不存在P=Q
Y=x*P1的k1次方*P2的k2次方*...*q1的r1次方*q2的r2次方*....
y/x--m个不同质因子数
所以就有2的m次方种可能
暴力:
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
int n=max(a,b);
int m=min(a,b);
if(n%m==0)
return m;
return gcd(n%m,m);
}
int main(){
freopen("gcd.in","r",stdin);
freopen("gcd.out","w",stdout);
int m,n;
cin>>m>>n;
int k=0;
int s=1;
if(m>n){
int x=0;
x=m;
m=n;
n=x;
}
int p=m;
int q=n;
while(1){
if(p*s >= q/s) break;
if(gcd(p*s,q/s)==m && (p*s)*(q/s)/gcd(p*s,q/s)==n){
k++;
}
s++;
}
if(p*s == p/s)k=k*2-1;
else k=k*2;
cout<<k;
fclose(stdin);
fclose(stdout);
return 0;
}
//记得注释文件输入输出
// freopen("gcd.in","r",stdin);
// freopen("gcd.out","w",stdout);
// fclose(stdin);
// fclose(stdout);