黑马程序员技术交流社区

标题: 每天一道编程题第6天 [打印本页]

作者: 胡成成    时间: 2016-3-15 20:04
标题: 每天一道编程题第6天
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
public class Prog6{
        public static void main(String[] args){
                int m,n;
                try{
                        m = Integer.parseInt(args[0]);
                        n = Integer.parseInt(args[1]);
                }catch(ArrayIndexOutOfBoundsException e){
                        System.out.println("输入有误");
                        return;
                }
                max_min(m,n);
        }
        //求最大公约数和最小公倍数
        private static void max_min(int m, int n){
                int temp = 1;
                int yshu = 1;
                int bshu = m*n;
                if(n<m){
                        temp = n;
                        n = m;
                        m = temp;
                }
                while(m!=0){
                        temp = n%m;
                        n = m;
                        m = temp;
                }
                yshu = n;
                bshu /= n;
                System.out.println(m+"和"+n+"的最大公约数为"+yshu);
                System.out.println(m+"和"+n+"的最小公倍数为"+bshu);
        }
}


作者: 恰巧    时间: 2016-3-15 22:19
加油{:3_58:}
作者: 从心开始のBean    时间: 2016-3-15 23:13
还看不太懂, 看来要加油学习了
作者: yuluoyu    时间: 2016-3-16 00:10
zheshinazhongyuyan?
作者: 332439409    时间: 2016-3-16 00:11
初学者 不是特别的看懂,不过应该过段时间就能看懂啦{:2_30:}
作者: 胡成成    时间: 2016-3-16 19:15
恰巧 发表于 2016-3-15 22:19
加油


作者: 胡成成    时间: 2016-3-16 19:17
332439409 发表于 2016-3-16 00:11
初学者 不是特别的看懂,不过应该过段时间就能看懂啦

一起加油
作者: gaoxuechao    时间: 2016-3-16 23:26
好的 ,加油
作者: 苍凉    时间: 2016-3-21 12:59
不错 加油哦
作者: 木丶子李    时间: 2016-3-21 15:22
加油!为了心中的想法,努力
作者: skxy2016    时间: 2016-3-22 18:43
/*
看了楼主的方法很简洁,这里写一个自己感觉比较容易理解的土方法,请各位互相交流
*/

/*
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

思路:
1,先比较两个数的大小,取出最小的数作为除数最大值min
  在遍历1到x之间满足能够同时被n,m整出的最大整数,即为最大公约数
2,两个数乘积作为公倍数的最大值max,遍历1到到max,满足同时除以n和m的最小整数即为最小公倍数。
*/
import java.util.Scanner;
public class GYS{
        public static void main(String[] args){
                Scanner s = new Scanner(System.in);
                int m = s.nextInt();
                int n = s.nextInt();
                gys(m,n);
                }
               
        //定义函数用于输出两个数的最大公约数
        public static void gys(int m,int n){
                //初始化公约数
                int numbgys = 1;
                //最小值min存储m和n两个数中最小的数,max1存储最大的数
                int min = 0;
                int max1 = 0;
                //判断m和n哪个数是最小的和最大的数
                if(m>n){
                        min = n;
                        max1 = m;
                        }
                        else{
                                min = m;
                                max1 = n;
                                }
                       
                        //通过for循环找出最大公约数
                        for(int i=1;i<=min;i++){
                                if((m%i==0)&&(n%i==0)){
                                        numbgys = i;
                                        }
                                }
                                System.out.println(m + "和" + n + "最大公约数为:" + numbgys);
                               
                        //初始化最小公倍数,最大的公倍数
                        int numbgbs = m*n;
                        //遍历max到1的所有整数
                        for(int i=m*n;i>=max1;i--){
                                if((i%n==0)&&(i%m==0)){
                                        numbgbs = i;
                                        }
                                }
                                System.out.println(m + "和" + n + "最小公倍数为:"+ numbgbs);
        }
}
作者: 就是我    时间: 2016-3-22 19:33
yuluoyu 发表于 2016-3-16 00:10
zheshinazhongyuyan?

java.........
作者: zhouhongwei    时间: 2016-3-23 10:18
恩,楼主是从网上找的题目吗?




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