题目描述
输入 2 个正整数 x,y,求出满足下列条件的 P,Q 的个数
条件:
-
P,Q 是正整数
-
要求P,Q 以 x 为最大公约数,以 y 为最小公倍数.
试求:满足条件的所有可能的 2个正整数的个数.
输入输出格式
输入格式:
2 个正整数 x,y
输出格式:
1 个数,表示求出满足条件的 P,Q 的个数
只是注意一点,两个数的最大公约数和最小公倍数的乘积,和原来两数的乘积相同。
可以据此解题。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int m,n; 4 int ans; 5 int gcd(int x,int y){ 6 if(y==0)return x; 7 return gcd(y,x%y); 8 } 9 int main(){ 10 cin>>n>>m; 11 for(int i=1;i<=sqrt(m*n);i++){ 12 if((m*n)%i==n&&gcd(i,(n*m)/i)==n) ans++; 13 } 14 cout<<ans*2; 15 }