3 条题解

  • 1
    #include<iostream>
    #include<cmath>
    using namespace std;
    int m,n,ans;
    int gcd(int x,int y)
    {
    if(y==0) {return x;}
    return gcd(y,x%y);
    }
    int main()
    {
    cin>>n>>m;
    for(int i=1;i<=sqrt(m*n);i++)
    {
    if((n*m)%i==0&&gcd(i,(n*m)/i)==n) ans++;
    }
    cout<<ans*2;
    return 0;
    }
    
  • 1
    #include<bits/stdc++.h>
    using namespace std;
    int gcd(int a, int b)
    {
        return a % b == 0 ? b : gcd(b, a % b);//判断是否互质(最大公约数是否为1)
    }
    int main()
    {
        int n, m, sum = 0;
        cin >> n >> m;
        if (m % n != 0)
        {
            cout << 0;
            return 0;
        }
        int temp = m / n;
        for (int i = 1; i <= floor(sqrt(temp)); i++)
        {
            if (temp % i == 0 && gcd(i, temp / i) == 1)
                sum += 2;
        }
        cout << sum;
        return 0;
    }
    
    
  • 0

    我有两种做法,见下!

  • 1

最小公倍数和最大公约数问题

信息

ID
1336
难度
1
分类
其他 | 数学搜索 | 枚举 点击显示
标签
递交数
37
已通过
31
通过率
84%
上传者