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

题目:输入两个正整数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);
}
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值