题目:最大公约数和最小公倍数问题
解题思路:
先利用辗转相除法求出两个数的最大公约数,再利用最小公倍数=两数乘积/最大公约数,计算出最小公倍数。
根据题目要求,以x为最大公约数,y为最小公倍数
利用双重循环遍历出有多少种情况满足题意。
代码:
#include<bits/stdc++.h>
using namespace std;
int gys(int a,int b)
{
int ans;
while(b)
{
//利用辗除法,直到b为0为止
ans = b;
b = a % b;
a = ans;
}
return a;
}
int gbs(int a,int b)
{
int temp;
temp=a*b/gys(a,b);//最小公倍数等于两数之积除以最大公约数
return temp;
}
int main()
{
int x,y;
cin>>x>>y;
int sum=0;
for(int i=2;i<=y;i++)
{
for(int j=2;j<=y;j++)
if(i*j==x*y&&gys(i,j)==x) sum++;
}
cout<<sum<<endl;
return 0;
// cout<<gys(x,y)<<endl;
// cout<<gbs(x,y);
}