Java必做算法题-程序功能:求两个数字的最大公约数和最小公倍数


前言

首先我们要了解什么是最大公约数和最小公倍数?


最大公约数:也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。

最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。


一、数学方式求最大公约数

方法一:我们可以使用辗除法来求最大公约数,被除数/除数结果取余。然后除数作为被除数,余数作为除数,继续做被除数/除数结果取余的操作,直到余为0,除数就是最大公约数如下数学步骤:
求20和40的最大公约数:
求20和40的最大公约数
没看懂是不是?
那再看看319和377的最大公约数是什么?
319和377的最大公约数
这回清楚了吧?那要把数学方式转为Java呢。

二、Java求最大公约数

1.定义2个int整型,a,b;判断a>b。

因为我们要做 被除数/除数结果取余数的操作。a作为被除数一定要大于除数

代码如下(示例):

 //返回最大公约数-迭代斩除法
  		if (a < b) {
            int temp = a;
            a = b;
            b = temp;
        }

2.使用for循环来做取余操作

被除数/除数结果取余数的操作,首先第一步我们要需要定一个余数remainder;
第二步确定循环条件:直到余数为0时,除数就是最大公约数,即我们要for结束条件就是余数remainder是否等于0

代码如下(示例):

		int remainder = -1;
        for (; remainder != 0; ) {
            remainder = a % b;
            a = b;
            b = remainder;
        }
        return a;
    }

这里为什么a作为返回值呢?余数等0时取除数作为最大公约数吗?a不是被除数吗?我们不是应该要用除数b作为最大公约数吗?
我们用319和377这个2个数来解释吧,
当循环做的最后一步时,
remainder=a%b;//这个时候a=58,b=29,remainder=0;
a=b;//a=29
b=remainder;//b=0
然后for循环判断,remainder余数等于0时结束循环。这个时候b除数已经赋值给被除数a了,所以要输出a作为最大公约数


三、求最小公倍数

这个就很简单了,我们自己套公式就可以得出结果:两数的积 / 最大公约数 = 最小公倍数

  //返回最小公倍数
    public static int lowestCommonMultiple(int a, int b) {
        int divisorMax = greatestCommonDivisor(a, b);//调取前面定义的最大公约数方法
        return a * b / divisorMax;
    }

总结

以上就是今天要讲的内容,本文介绍了基础的算法使用,方便大家快速入手编程思想,把数学题转变为编程语言写法,编程很简单,因为他只能一步一步执行!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值