输入两个正整数m和n,求其最大公约数和最小公倍数

来源:互联网 发布:淘宝性价比高的童装店 编辑:程序博客网 时间:2024/05/16 13:46

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用嗅探法,一个一个数的去试探循环找到符合条件的值。
最小公倍数:两个数公有的最小倍数
最大公约数:两个数公有的最大约数(都能被整除的数)

class  MinDivisor_MaxCommonMultiple{//输入两个正整数m和n,求其最大公约数和最小公倍数。 int num1,num2;public MinDivisor_MaxCommonMultiple(){    System.out.println("请输入两个数:");    Scanner sc  = new Scanner(System.in);     this.num1 = sc.nextInt();     this.num2 = sc.nextInt();    sc.close();}//最大公约数public  void  MaxCommonMultiple(){    //判断输入的数,哪个数就输出哪个,比如12 和18,18大于12就在18里面循环最大公约数    int iBiggerNum = num1>num2?num1:num2;    int iMaxCommonMultiple = 1;//假设最大公约数等于1    //现在在18里面循环,当循环的数除以i等于0时就输出公约数,然后把公约数赋给变量i,一直循环    for(int i = 1;i<=iBiggerNum;i++){               if(0 == num1%i  && 0 == num2%i){                System.out.print("公约数="+i+" ,");                iMaxCommonMultiple = i;            }        }    System.out.println();    System.out.print("最大公约数="+iMaxCommonMultiple);}//最小公倍数public void MinDivisor(){    int MaxNum = num1*num2;//定义输入两个数的乘积    int iMinDivisor = num1*num2;//假设最小公倍数就是两数的乘积    //利用嗅探法,让两数的乘积一个一个的循环,比如 4 和 6,有24 23 22 21……12……1.    //当循环到12时就满足12除以4和6的余数都是0的情况,此时就输出12    for(int i = MaxNum;i>0;i-- ){        if(0 == i%num1 && 0 == i%num2){            iMinDivisor = i;//把两数乘积的循环赋值给最小公倍数,一直循环,直到符合条件为止            System.out.print("公倍数:"+iMinDivisor);        }    }    System.out.println();    System.out.println("最小公倍数:"+iMinDivisor);}}
0 0