freeCodeCamp/guide/chinese/algorithms/greatest-common-divisor-euc.../index.md

2.1 KiB
Raw Blame History

title localeTitle
Greatest Common Divisor Euclidean 最大公约数欧几里得

最大公约数欧几里得

对于本主题您必须首先了解最大公约数GCD和MOD操作。

最大公约数GCD

两个或多个整数的GCD是最大的整数它将每个整数除以其余数为零。

例-
GCD为20,30 = 10 10是最大数字其中20和30除以余数为0
GCD为42,120,285 = 3 3是将42,120和285除以余数为0的最大数字

“mod”操作

当两个正整数被分割时mod运算会给出余数。 我们写如下 -
A mod B = R

这意味着将A除以B得到余数R这与给出商的除法运算不同。

例-
7 mod 2 = 1 除以7得到余数1
42 mod 7 = 0 将42除以7得到余数0

通过理解上述两个概念,您将很容易理解欧几里德算法。

最大公约数GCD的欧几里德算法

欧几里德算法找到2个数的GCD。

通过查看它的运行情况,您将更好地理解该算法。 假设您要计算1220和516的GCD让我们应用欧几里德算法 -

假设您要计算1220和516的GCD让我们应用欧几里德算法 - 欧几里得实例

算法的伪代码 -
第1步 a, b为两个数字
步骤2 a mod b = R
步骤3 a = bb = R
步骤4 重复步骤2和3直到a mod b大于0
步骤5 GCD = b
第6步完成

Javascript代码执行GCD-

function gcd(a, b) { 
  var R; 
  while ((a % b) > 0)  { 
    R = a % b; 
    a = b; 
    b = R; 
  } 
  return b; 
 } 

使用递归执行GCD的Javascript代码 -

function gcd(a, b) { 
  if (b == 0) 
    return a; 
  else 
    return gcd(b, (a % b)); 
 } 

您还可以使用欧几里德算法查找两个以上数字的GCD。 由于GCD是关联的因此以下操作有效-GCD GCD(a,b,c) == GCD(GCD(a,b), c)

计算前两个数字的GCD然后找到结果的GCD和下一个数字。 GCD(203,91,77) == GCD(GCD(203,91),77) == GCD(7, 77) == 7

您可以以相同的方式找到n数字的GCD。