00:00
那复习完以后呢,首先呢,我们再做一个关于好循环的一道这个例题,通过这个例题呢,我们来说明一下,这个叫break关键字的使用,哎,Break关键字呢并不陌生了,哎,我们在前边three当中已经使用过,表示呢,叫跳出你当前这个case这个结构啊,Break本身就是终止结束的意思啊,那我们看一下在循环当中它又可以起到什么样的作用啊,把这个题我们CTRLC一下。嗯,这块我们就先关掉它啊,在我们D05下呢,新建一个哎,Java文件,哎,循环的一个测试啊,这样public static make4针形的一个X的数组,这样行,咱们来看一下这道题啊,这个题呢,其实还稍微有一点难度啊,说呢输入两个正整数M和N,哎,这个应该可以搞得定,说呢求这两个数的最大公约数和最小公倍数。
01:23
哎,比如说呃,12和20,呃,最大公因数是四,最小公倍数是60。嗯,这个最大公约数跟最小公倍数,首先你得会是吧?嗯,这个基本的概念是数学上讲的,还记得吧?嗯,得记得啊,这个首先呢提到的概念做公约数和公倍数,你把公去了,那就要约数和倍数是吧,一点点去剖析呗,约数呢,就是能够,比如说12啊,对于12来讲,像都谁是它的约数啊,一二三四六十二,对,就是能够被他除尽了是吧,那就12去除这个数都能除尽,这叫约数了啊,那倍数呢,那那就是比他大的,然后除他能出进的呗,对,12啊,24啊,三十六四十八是吧,等等等等等这样啊,那行了,先知道这个约束跟倍数,然后呢,下面叫公约数和公倍数,对,那就是既是你的约数又是我的约。
02:31
数,那就咱俩公共的约数,这叫公约数,对,哎,比如说这个12跟20,哎一算吧,公约数啊算还有二三不行了,四可以没了,就是既能够被12除出尽,又可以被20除出尽,大家的公共部分,这就是仨,这仨里边最大的这个就叫最大公约数,对,那公倍数呢,类似的啊,即使你的倍数就是我的倍数,嗯,那上来就60了,对吧,就是呃,比60小的这个12的倍数和比60小的20的倍数都它俩都没有公共的啊呃,60啊,比如一百二啊等等,这都是,然后呢,找这个最小的这个,哎,公倍数就是最小公倍数啊行,这个概念清楚以后呢,那来吧,这个怎么去求最大的公约。
03:31
数最小的公倍数啊嗯,先把这俩的约束全找到啊,不用全找到,就是我们知道约束的意思,就是说我定义一个变量,比如说是吧,然后呢,我让这个,哎,先这样吧,咱们先把这个MN这俩数先给他这个这个输入进来是吧,用一下这个scanner啊一步步来。
04:04
要的。接着呢,我们这个给用户一个友好的提示,哎这呢叫请输入,嗯,这个一个整数正数,哎这个我们一个一个写,先写一个哎一的行不妨呢,我这就叫一个M也行啊,就叫M吧,来请输入或者要第一个哎正数,然后再来一个第二,嗯正数,这不是他说的是正数了吗?正整数啊正整数。然后第二个正整数行了,那这时候这个MN呢,我们从控制台呢,就已经获取到了啊嗯,接下来呢,我们先考虑这个叫被这个约束吧,约束呢就好比是我们现在比如说有一个变量了,咱们呢就是说判断一下,如果你发现这个M呢,去这个取模I等等于零,这就算是约束了,同时呢,要求这个N呢,在取模这个I的时候呢,也得等等于零,是不是这个时候呢,我们这个I就一定是一个约束了,对,是约束呢,你说我就输出一下,但这不行啊,这时候约束不一定是最大的吧。
05:37
你这只能保证这个是你的约束是吧,那这里边就有有问题了啊,第一个我们怎么去保证我们这个I呢,是我们要的最大的,第二个呢,我们这个I呢,我从这个我都没有给这个I数过值是吧?这个I呢,它的可以考虑的范围应该是多少到多少之间到大小条,诶这个大家说的是对的啊,你想我们说约束,这个约束肯定不能比这个数本身还大吧,对,那你公约数呢,你不能比这俩里边这个小的这个数还大吧,哎,对,所以我们这个I呢,自然而然的它就会有一个范围啊,应该它最大不能超过这俩里边比较小的那一个。
06:25
啊,不能超过,那那从几开始啊,比如说就这个题目来讲,这个12是最小的,这个它是不是可以从一开始啊,对啊,一肯定是它俩的这个约数了,就是你两个数求最大公因数,大不了大不了就是一倍,对啊行,那我们知道这个I的范围了,知道范围以后呢,下一个问题,我怎么保证我这个I呢是能找到的这个最大的那个呢?诶,我是不是从大的往小的里边去找,我先让这个I呢,取值是M和N里边呢,较小的这个数,哎,然后呢,这个数呢,被这俩去除,看看能不能除尽,除不尽,除不尽呢,再小一个从这走,只要突然发现一个除尽了,因为你右边这些都除不尽啊,它是一定的,就是最大的那个公约数了,哎,对,而且呢,一旦找到一个以。
07:25
然后呢,就不要再往下走了,就停止了,就完了,哎,这就是这道题的一个思路啊,就我们一点点去剖析啊,行,那现在这个问题呢,就集中在我们呢,要获取两个数最中的这个较小值,行in的一个min,哎,这个我们用什么来获取啊,对,三元不是就上场了吗?M如果大于N冒号,呃,问号,哎,这这个上来就习惯写个大,写大也行哈,写小吧,如果这是处M,嗯,就这样呗,等号写不写所谓是吧,你等的话,你让他是不都所谓,所以加不加都行啊嗯,取出这个最小的了,然后接下来呢,得写个for循环了,哎,让我们这个I呢,先是这个。
08:25
In,然后I呢,每次呢是减减的,然后呢,你得有一个循环条件呀,这个I怎么着大于等于一,嗯,然后在这里面,哎,不就是我们刚才写的这个逻辑吗?哎在这里面啊说呢我让M呢和N分别去这个取摸我们这个I,哎就是看看是不是结果是零,只要这两个都满足的情况下呢,我就把这个I呢输出一下。
09:00
哎,这个算是呢,我们就就这样呢,我们能找到的实际上是所有的约束是吧?哎,我们先跑一下看一看啊,Java c报test Java请输入一个,我们就拿12来说啊,第二个20回车,诶你看421都出来了,来此时呢,是把他们的公约数都取出来了哈,那现在我们不想要所有的,只想要最大的一个怎么办?对这个时候呢,我们就要讲一个关键字,Break的使用。哎,咱们前面呢,已经也见过哈,也不陌生,所以这块呢,只是在循环中用而已,哎,一旦执行到主立块,我们就要跳出当前循环,哎,就像你跳出那个Switch case一样啊好在这写一下,说一旦在循环中啊,执行到break,哎,我们说就跳出循环。
10:09
哎,很简单啊,那一旦我们找到一个约束以后呢,就立马结束,那这个自然而然就是我们最大的公约数。边以运行还是十二二十诶四。哎,这个体现好一点,前面你可以加一句话啊,说这个最大公约数为,哎,加上我们这个,哎哎,OK,搞定理解吧,嗯,那接下来呢,我们现在来求这个最小公倍数,有了公倍数这样的一个想法了,公倍数怎么搞定?对公倍数,公倍数肯定是不能比它俩小是吧,那就意味着你像这得大于12了,然后呢,公倍数肯定得大于等于20了。
11:04
啊,这个得大于等于12啊,那你这块从几开始啊是对,应该从这两个里边那个较大的这个数开始是吧,然后那走走走,有没有这边的一个中止的一个范围啊对啊,就是我让MN去相乘,乘积肯定至少是它俩的倍数,对,但不一定是最小公倍数是吧?哎,然后我就从这往这走,只要发现这个数呢,除以它俩的时候都除尽了这个就是,而且呢,这个时候就终止掉哎就可以了啊行,所以这块呢,我们这个这个操作呢,是获取最大哎公约数啊哎,这是我们的第一步啊下一步呢,就是便利,哎电力呢去获取啊下边获取最小公倍数,哎第一步也是一个呃叫。
12:04
获取。哎,两个数中的较大值啊,In的一个max等于M,如果大于等于N啊,没有等号也没事啊,哎,我们呢是M,嗯,行,然后接下来第二步便利,放心玩一的等于等于谁二吧,然后I呢要小于等于M乘以N,然后I加加好在这里面,嗯,判断如果这个I呢,取模M等等于零,且I取模N等等于零,诶这就相当于我们这个I呢是它们的倍数啊,一旦是倍数我就sit out哎,我把这个艾输出,而且一旦找到一个以后我就break掉,哎,那自然而然这个就是。
13:06
这个最小公倍数CR一下,这个是不是就搞定了,来测试啊,编译运行还是拿12啊二十来举例子。60行这个题看还有问题吗,大家。哎,就是我们拿到一道题目以后呢,这个题可能大家没有做过,当然呢,你得一点点去剖析啊,前提是这道题里边你没有没有这个没有学过的知识点啊,你要有没有学过知识点,你你再去推也推不出来是吧?啊就像这个我觉得我上高中的时候,我们那我们学校那时候有这个数学竞赛啊,就跟我同宿舍那哥们,他这个数学其实挺强的啊,那时候我们上到高二的时候呢,高三的那些数学好多都还没讲,但是他们参加数学竞赛呢,这个要考那个高三的啊,那哥们很厉害,厉害到什么程度呢?就是他在家参加数学竞赛的时候呢,有一些公式呢,他不知他不知道,但是他知道这里边肯定要用到那些东西,他就先推。
14:15
啊,现推公式现用很强大是吧?啊这个咱们肯定不行了啊,你说这个里边假设有一些陌生的知识,比如说scanner等等,你也不会用,也没讲过,然后你去在这硬看,你看一天你也看不出来是吧?嗯,就是大家遇到一些陌生题的时候呢,先确定这里边没有这个新知识了啊,然后这时候呢,呃,你你想想怎么去把这个问题一点点去剖析啊,一点点更加深入啊就是这呢,需要大家这个不断的去强化这样的一个能力啊呃,但是刚开始的时候呢,你可能还差点啊呃,这个呢,因为刚开始你练的题还少啊嗯,另外呢,通过这道题呢,咱们需要大家这个掌握的就是关于这个循环结构当中break关键字的一个使用啊,啊这是我们刚才写到这个点在循环当中啊,一旦执行到这个break就跳出循环,好,那这个我们停一下。
我来说两句