A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡成成 中级黑马   /  2016-3-15 20:04  /  1955 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【程序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);
        }
}

12 个回复

倒序浏览
加油{:3_58:}
回复 使用道具 举报
还看不太懂, 看来要加油学习了
回复 使用道具 举报
zheshinazhongyuyan?
回复 使用道具 举报
初学者 不是特别的看懂,不过应该过段时间就能看懂啦{:2_30:}
回复 使用道具 举报
回复 使用道具 举报
332439409 发表于 2016-3-16 00:11
初学者 不是特别的看懂,不过应该过段时间就能看懂啦

一起加油
回复 使用道具 举报
好的 ,加油
回复 使用道具 举报
苍凉 中级黑马 2016-3-21 12:59:56
9#
不错 加油哦
回复 使用道具 举报
加油!为了心中的想法,努力
回复 使用道具 举报
/*
看了楼主的方法很简洁,这里写一个自己感觉比较容易理解的土方法,请各位互相交流
*/

/*
题目:输入两个正整数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);
        }
}
回复 使用道具 举报

java.........
回复 使用道具 举报
恩,楼主是从网上找的题目吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马