HJ108 求最小公倍数

https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3?tpId=37&tqId=21331&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=

经典lcm,其实可以根据直觉直接推出 (a/gcd) * (b/gcd) * gcd = lcm

最小公倍数一定小于等于a*b,且显然最小公倍数是最大公约数的倍数,a是gcd的倍数,b也是gcd的倍数,即a是a和gcd的最小公倍数,b是b和gcd的最小公倍数,要求公共的,a和b的最小公倍数,且a*b也一定是gcd的倍数, 那就是看a*b有多少个gcd,但是这是直觉证明,可能看不懂

也可以看大佬的证明

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        int b=in.nextInt();
        System.out.println(a*b/gcd(a,b));
    }

    private static int gcd(int a, int b) {
        return b==0 ? a : gcd(b,a%b);
    }
}

 

posted @ 2024-06-15 01:44  风乐  阅读(30)  评论(0)    收藏  举报