数论基础
ExGcd
以下将通过一个具体的例子,详细演示扩展欧几里得算法(ExGCD)的过程。我们将选择一对整数,逐步展示如何使用 ExGCD 计算它们的最大公约数(GCD)以及对应的贝祖系数。
示例问题
题目: 使用扩展欧几里得算法求解 $ \gcd(252, 198) $,并找到整数 $ x $ 和 $ y $,使得:
\[252x + 198y = \gcd(252, 198)
\]
解题步骤
步骤一:应用欧几里得算法求 GCD
首先,我们使用欧几里得算法来计算 $ \gcd(252, 198) $。
\[\begin{align*}
252 &= 198 \times 1 + 54 \quad &(\text{余数 } r_1 = 54) \\
198 &= 54 \times 3 + 36 \quad &(\text{余数 } r_2 = 36) \\
54 &= 36 \times 1 + 18 \quad &(\text{余数 } r_3 = 18) \\
36 &= 18 \times 2 + 0 \quad &(\text{余数 } r_4 = 0) \\
\end{align*}
\]
因此,$ \gcd(252, 198) = 18 $。
步骤二:回代求解贝祖系数
接下来,通过扩展欧几里得算法回代,找到整数 $ x $ 和 $ y $,使得:
\[252x + 198y = 18
\]
我们从最后一个非零余数开始回代:
- 从第三步开始:
\[18 = 54 - 36 \times 1 \quad (1)
\]
- 将第二步的余数 $ 36 $ 用第一步的等式表示:
\[36 = 198 - 54 \times 3 \quad (2)
\]
- 将等式 (2) 代入等式 (1):
\[18 = 54 - (198 - 54 \times 3) \times 1 = 54 - 198 + 54 \times 3 = 54 \times 4 - 198
\]
即:
\[18 = 54 \times 4 - 198 \quad (3)
\]
- 将第一步的余数 $ 54 $ 用原始数 $ 252 $ 和 $ 198 $ 表示:
\[54 = 252 - 198 \times 1 \quad (4)
\]
- 将等式 (4) 代入等式 (3):
\[18 = (252 - 198) \times 4 - 198 = 252 \times 4 - 198 \times 4 - 198 = 252 \times 4 - 198 \times 5
\]
因此,贝祖等式的解为:
\[x = 4, \quad y = -5
\]
即:
\[252 \times 4 + 198 \times (-5) = 18
\]
步骤三:验证结果
我们可以通过计算验证上述结果是否正确:
\[252 \times 4 + 198 \times (-5) = 1008 - 990 = 18
\]
验证无误。
步骤四:总结
通过上述步骤,我们使用扩展欧几里得算法成功地找到了 $ \gcd(252, 198) = 18 $,以及满足贝祖等式的整数 $ x = 4 $ 和 $ y = -5 $。
🚧正在施工,目前正在找例题 & 写题解🚧
P1414 又是毕业季II
题意:对于每一个 \(k=i\),在 \(n\) 个数中选择 \(k\) 个,是他们的最大公约数最大。
题解:对于每一个数,把它的因子的 \(\texttt{cnt++}\)。然后从大到小找第一个个数大于 \(k\) 的 \(\texttt{cnt}\),输出。因为答案必然递减,所以查询时间复杂度为 \(O(n)\)。Code
P1072 [NOIP2009 提高组] Hankson 的趣味题
题意:求使得 \(\gcd(a, x)=b,\operatorname{lcm}(c, x) = d\) 的 \(x\) 的个数。
题解1:质因子分解,根据 \(a, b\) 算出 \(p_i\) 质数的下限,根据 \(c, d\) 算出 \(p_i\) 的上限。根据乘法原理算出即可。