文章目录
- 前言
- 一、数学方式求最大公约数
- 二、Java求最大公约数
- 1.定义2个int整型,a,b;判断a>b。
- 2.使用for循环来做取余操作
- 三、求最小公倍数
- 总结
前言
首先我们要了解什么是最大公约数和最小公倍数?
最大公约数:也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
一、数学方式求最大公约数
方法一:我们可以使用辗除法来求最大公约数,被除数/除数结果取余。然后除数作为被除数,余数作为除数,继续做被除数/除数结果取余的操作,直到余为0,除数就是最大公约数如下数学步骤:
求20和40的最大公约数:
没看懂是不是?
那再看看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;
}
总结
以上就是今天要讲的内容,本文介绍了基础的算法使用,方便大家快速入手编程思想,把数学题转变为编程语言写法,编程很简单,因为他只能一步一步执行!!!