算法——最大公约数 – Fogwind

   澳门银河官网

百度百科上引见的最大公约数的求法(限两标号)首要有两种:分相各种各样的复原。

翻来复去相除法

翻来复去相除法,百度百科全书诉讼手续:

运用(A),b)表现a和b的最大公约数。

譬如,求(319,377):

∵ 319÷377=0(余319)

∴(319,377)=(377,319);

∵ 377÷319=1(余58)

∴(377,319)=(319,58);

∵ 319÷58=5(余29),

∴ (319,58)=(58,29);

∵ 58÷29=2(余0),

∴ (58,29)= 29;

∴ (319,377)=29.

换句话说,求两标号的最大公约数时,先把大数除号大数,设想你能施行它,最大公约数就本利之和较十进位的;不同的,经过第一步将残渣数除号较小的数。,设想你能施行它,最大公约数就本利之和第一步的废材;不同的,残渣的最大的一步的残渣电流,直到你能施行它。此刻作为除数的那标号执意最开端那两标号的最大公约数。

上面是法典:

 1function 气相色谱法(M),n) {
 2var a, c, e, f;
 3//对m,n排序,后面较小,靠背较大 4if(m > n) {
 5       a = m;
 6       m = n;
 7       n = a;
 8   }
 9    c = m, e = n, f = c;
10while(c !== 0) {
11       f = e % c;
12       e = c;
13       c = f;
14   }
15   警报(e)
16return e;
17 }

法典首要是环绕while圆形的的长度法典。。(对答案的援用)

缩减分阶段进行失败的方式

《百度百科全书》释义

第一步:恣意假定的的两个无符号整数;决定它们穿着的哪一体是偶数。若是,2复原;设想不注意,担当管理人秒步。

秒步:用更大的数字减去一体较小的数,纷纷把所得的差与较小的数较比,落落大方地缩减十进法数。持续此操控,直到减法和差值的差值相当。

用第一步中约掉的到什么程度个2与秒步作主持人数的结果执意所求的最大公约数。

例1、用更相减损术求98与63的最大公约数。

解:由于63责备偶数,落落大方缩减98和63,滚下:

98-63=35

63-35=28

35-28=7

28-7=21

21-7=14

14-7=7

因而,98和63的最大公约数本利之和7。

例2、用更相减损术求260和104的最大公约数。

解:由于260和104都是偶数,率先,用2的约简走快130和52。,运用2缩减走快65和26。

此刻65是奇数的,26责备奇数的。,因而65和26降落了。:

65-26=39

39-26=13

26-13=13

因而,260与104的最大公约数本利之和13乘以第一步中约掉的两个2,换句话说,13×2×2=52。

上面是法典:

 1function gcm2(m,n) {
 2var a, c, e, f, index = 0;
 3//对m,n排序,后面较小,靠背较大 4if(m > n) {
 5       a = m;
 6       m = n;
 7       n = a;
 8   }
 9//设想M,n是偶数10while(m % 2 === 0 && n % 2 === 0) {
11       m = m/2;
12       n = n/2;
13       index++;
14   }
1516    f = m, e = n, c = n - m;
17while(c !== f) {
18       e = f;
19       f = c;
20       c = e - f;
21if(c < 0) {
22          c = -c;
23      }
24   }
25    alert(f*2*标引)
26return f*2*index;
27 }

分离法是计算下层分离的首要方式。,缩减分阶段进行失败的方式以减法尽。计算次数对立较劣的。,尤其当两标号字私下的辨别很大时,辨别很大。。

索取多标号的最大公约数,可以先求出穿着恣意两标号的最大公约数,再求这么地最大公约数与第三标号的最大公约数,轮番行进,直到最大的一标号字。最大的所得的这个最大公约数,执意缠住这些数的最大公约数。

多标号的最小公有时

两标号的最小公有时本利之和这两标号的结果除号这两标号的最大公约数。

多标号的最小公有时时,它们的最小公共乘法器可以率先取得。,求两标号和最小公有时的最小公有时,什么的,直到最大的一标号字。所取得的最小公有时是这些数字的最小公有时。。

上面是法典:

 1function smallestCommons(arr) {
 2   arr = (function(a,b) {
 3return a-b;
 4  });
 5var brr = [];
 6for (var i = ARR〔0〕 i <= arr[1]; i++) {
 7     brr.push(i);
 8  }
 9var m,n,c,e,f;
1011for (var i = 0; i < brr.length; i++) {
1213if(BRR[i]) <=  brr[i+1]) {
14        m = BRR[I]
15        n = brr[i+1];
16      } else {
17        m = brr[i+1];
18        n = BRR[I]
19     }
202122//求两标号的最大公约数23      c = m, e = n, f = c;
24while(c !== 0) {
25       f = e % c;
26       e = c;
27       c = f;
28     }
2930//两标号的最小公有时31var d = m * n / e;
32//警报(D)33      brr.splice(0,2,d);
343536if(brr.length === 1) {
37       num = d;
38break;
39     }
40      i = -1;
41  }
4243  console.log(num);
44return num;
45 }

重大聚会SimaListCAMONS()收执大厦参量,此大厦容纳两个突出,这么地重大聚会的功能是找出最小共乘。,最大的,回转最小公共有时。。

譬如:

smallestCommons([1, 13]);//回转 360360。

没有评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注