黑马程序员技术交流社区

标题: 求大神解答 [打印本页]

作者: dengxuye    时间: 2016-3-26 22:38
标题: 求大神解答
输入两个正整数m和n,求其最大公约数和最小公倍数。
作者: ckm666666    时间: 2016-3-26 22:44
public static void main(String[] arg){
        Scanner sc = new Scanner(System.in);
        int a =sc.nextInt();
        int b =sc.nextInt();
        int t=0;
        int i;
        for(i=a;i>=2;i--)
        if((a%i==0)&&(b%i==0))
        {
                System.out.println("最大公约数为:"+i);
                t++;
                break;
        }
        if(t==0)
                {
                        System.out.println("没有最大公约数");
                        System.out.println("最小公倍数为:"+a*b);
                }
        else
                //由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。
                {
                        System.out.println("最小公倍数为:"+a*b/i);
                }
        }
作者: ckm666666    时间: 2016-3-26 22:45
前阵子做的,没什么注释,希望你能看懂
作者: luomoss    时间: 2016-3-26 22:56
m%x=0,n%x=0,x就是m,n的公约数,for循环,(x=m或者x=n),x--到满足前面条件的时候break结束循环,就可以求出最大的公约数
y%m=0,y%n=0,y就是m,n的公倍数。for循环,(y=m或者y=n),y++到满足前面条件的时候break结束循环,就可以求出最小的公倍数
作者: lennycxy    时间: 2016-3-26 23:01
受教了,都忘了公倍数和公约数咋算的了
作者: dengxuye    时间: 2016-3-27 18:28
ckm666666 发表于 2016-3-26 22:44
public static void main(String[] arg){
        Scanner sc = new Scanner(System.in);
        int a =sc.nextInt();

很详细,谢谢大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2