洛谷P1029 最大公约数和最小公倍数问题

题目:在这里插入图片描述
在这里插入图片描述
思路:两个数的乘积等于这两个数的最大公约数和最小公倍数的乘积!!!所以用欧几里得算法求出最大公约数,再,枚举。

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int gcd(int a,int b)
{
    if(b!=0)
        return gcd(b,a%b);
    else
        return a;
}
int main()
{
    int x,y;
    cin>>x>>y;
    int z=x*y;
    int sum=0;
    if(x==y)
        sum--;
    for(int i=1;i<=sqrt(z);i++)//开平方,优化
        if(z%i==0&&gcd(i,z/i)==x)
        sum+=2;
    cout<<sum<<endl;
    return 0;
}
发布了35 篇原创文章 · 获赞 0 · 访问量 689

猜你喜欢

转载自blog.csdn.net/fendouzhilu666/article/details/104499570
今日推荐