跳到内容
从一个困惑开始

你想弄懂什么?

找到答案,看到讲解发生的那一刻,再顺着概念继续探索。

← 概念导览

关于「欧几里得算法如何计算最大公约数?」

10 个关键词匹配

正在理解你的问题,下面的搜索结果可先查看。

理解原因

↗

欧几里得算法将旧的除数移到左边(新的被除数),将旧的余数移到较小数的位置(新的除数),以递归地简化问题。这种移位确保随后的每个除法步骤都在更小的数字上进行,同时保持原始数对的最大公约数,直到达到余数为零为止。

适用条件:算法应用于两个正整数。;前一个余数不为零。;过程持续直到获得余数 0。

理解原因

↗

在欧几里得算法中,当除法过程产生零余数时,原来两个整数的最大公约数就是获得的最后一个非零余数。算法在此时停止,因为方法已经结束,并且保证最后一个非零余数能整除原来的两个数。

适用条件:欧几里得算法应用于两个整数。;遵循重复长除法的过程,直到达到零余数。

理解原因

↗

该例子以 4 结束,是因为反复应用减法规则最终得到 4。首先,12−8=412 - 8 = 4,形成数对 8 和 4。

适用条件:从数对 12 和 8 开始。;反复用较大的数减去较小的数。

理解原因

↗

令 k 等于 a 除以 b 的下取整,会将项 a−k⋅ba-k\cdot b 转换为 a 除以 b 的余数。由于 a mod b=ab = a - floor(a/ba/b)·b,将其代入递推公式 gcd(a,b)=gcd(b,a−k⋅ba-k\cdot b) 得到 gcd(a,b)=gcd(b,a mod b),这就是欧几里得算法。

适用条件:k 被设为 floor(a/ba/b)。;b 不为零(由除法运算隐含,尽管视频中未明确说明)。

理解原因

↗

一旦新余数为 0,除法就是精确的,这意味着当前的除数能完美整除前一个被除数。算法的终止规则指出,原始数对的最大公约数是最后一个非零余数,也就是这次最终精确除法的除数。

适用条件:欧几里得算法已应用于两个正整数。;一个除法步骤产生了余数 0。;输入是 10 和 45。

理解原因

↗

公因数也能整除差,是因为除法被解释为重复的减法。如果一个数能整除较大的数和较小的数,那么从较大的数中反复减去较小的数,最终留下的差也能被同一个除数整除。

适用条件:例子中有两个数。;所选的除数能以演讲者描述的方式整除。;减法是用较小的数从较大的数中进行的。

理解原因

↗

这段 C++ 代码在循环结束后返回 `b` 而不是 `r`,因为循环条件是 `r>0r > 0`。当循环终止时,`r` 已经变成了 0,这不是最大公约数。

适用条件:循环条件是 `while (r>0r > 0)`。;变量 `a`、`b` 和 `r` 在循环内按 `a=ba = b; b=rb = r; r=ar = a % b;` 更新。

理解原因

↗

最后一个非零余数 rnr_n 是 gcd⁡(a,b)\gcd(a,b),因为欧几里得算法在每一步都保持最大公约数不变:gcd⁡(a,b)=gcd⁡(b,r1)=gcd⁡(r1,r2)=⋯=gcd⁡(rn,0)\gcd(a,b) = \gcd(b,r_1) = \gcd(r_1,r_2) = \dots = \gcd(r_n, 0)。由于任何数都能整除 0,rnr_n 和 0 的最大公约数就是 rnr_n 本身。

适用条件:当余数为 0 时算法终止。;rnr_n 是序列中的最后一个非零余数。

理解原因

↗

最大公约数被定义为正公因数的最大值。改变输入的符号不会改变它们正公因数的集合,因此取绝对值可以保持最大公约数不变。

适用条件:整数 aa 和 bb 不同时为零。;最大公约数被视为正整数。

理解原因

↗

将 gcd⁡(a,b)\gcd(a,b) 改为 gcd⁡(b,r1)\gcd(b,r_1) 会使问题规模变小,因为余数 r1r_1 严格小于除数 bb。通过将较大的数 aa 替换为较小的余数 r1r_1,最大公约数函数的输入大小在每次迭代中都会减小。

适用条件:整数 aa 和 bb 满足 a≥b>0a \ge b > 0。;余数 r1r_1 满足 0≤r1<b0 \le r_1 < b。