文章目录

  • 前言
  • 一、数学方式求最大公约数
  • 二、Java求最大公约数
  • 1.定义2个int整型,a,b;判断a>b。
  • 2.使用for循环来做取余操作
  • 三、求最小公倍数
  • 总结



前言

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


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

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


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

方法一:我们可以使用辗除法来求最大公约数,被除数/除数结果取余。然后除数作为被除数,余数作为除数,继续做被除数/除数结果取余的操作,直到余为0,除数就是最大公约数如下数学步骤:

求20和40的最大公约数:

java math 求公约数 java公约数和公倍数_算法


没看懂是不是?

那再看看319和377的最大公约数是什么?

java math 求公约数 java公约数和公倍数_算法_02


这回清楚了吧?那要把数学方式转为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;
    }

总结

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