4.26 每日一题题解

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

涉及知识点:

  • 数学

solution:

  • (所有的(a,b),都必须满足:)
  • (①gcd(a,b)=x)
  • (②lcm(a,b) = a*b/gcd(a,b) = y)
  • (①②化简得到a*b = x*y)
  • (做法就是枚举a,则b就等于frac{x*y}{a})
  • (接下来就判断a,b是否符合条件即可)

std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    ll x, y;
    while(~scanf("%lld%lld",&x,&y)){
        int ans = 0;
        for(ll i = 1;i<=max(x,y);i++){
            if(x*y%i == 0 &&__gcd(i , x*y/i) == x)
                ans++;
        }      
        printf("%d
",ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/QFNU-ACM/p/12777287.html