取模运算性质_同余运算和费马小定理的证明

SICP 一书 1.2.6 小节提到费马检查和费马小定理,但没有小定理的证明。此文补充这个证明。

同余运算

以数学符号来描述,假如

,两者同余,记为

同余等价符号是三个横线的等号。另外数学符号 a mod n 是一个整体,表示 a 对 n 求模(取余数),没有像函数调用那样记成 mod(a, n)

同余有些很好的性质。有加法原理和乘法原理。

mod 运算,可看成是时钟转圈,超出一圈又会绕到原来的地方。

在同余的公式中,经常会出现 mod 运算,似乎很复杂。但只要将 a 看成是跟

等价,公式就会很自然了。

出现 mod 都是为了让 a 转几圈之后,重新落入到 [0, n) 的区间之下。这样参与运算的数字会在 [0, n) 中,结果也会封闭在 [0, n) 中,永远不会超出这个范围。

比如乘法性质,先将 a 看成等价的

, b 看成等价的
,之后再相乘,乘出来的结果再算 mod, 重新落入 [0, n) 区间中。

只要将 a 看成是跟

等价,同余的很多运算性质几乎就跟普通整数运算一样。

快速幂取模

代码 expmod 计算幂取模运算,其实应用了同余的乘法原理。

当 b 为奇数时

当 b 为偶数时

费马小定理

费马小定理说,当 n 为素数,a < n (或者 a, n 两者互质)时,有

我们变换一下公式

--------------------

要证明费马小定理,先要证明一个结论。假如 n 是一个素数,a < n, 这样排列 1、2、3、4、5 .. n - 1, 乘以 a, 再取 n 的余数,结果也是 1 到 n - 1 的排列,但是顺序会打乱。

举个例子 n = 5, a = 3。

  • 1、2、3、4 (原始排列)
  • 3、6、9、12 (原始排列乘以 a = 3)
  • 3、1、4、2 (取 5 的余数)

可以看到,余数仍然是 1 到 4 之间,没有重复,只是顺序打乱了。

反证法。假如结论不成立的话,就会有 i, j 两个数字,使得

不妨假设 i > j,将上式移动一下位置,就会有

换句话说,就是 (i - j) * a 可以被 n 整除。而 n 是素数,那么 (i - j) 或者 a 其中之一就必须包含因子 n。但 (i - j) 和 a 都比 n 要小,显然不可能包含因子 n。于是结论得证。

上面的证明中,不一定需要 a < n。只要 n 为素数,而 a, n 两者互质,证明也可成立,费马小定理也可成立。

--------------------

因为乘以 a 再 mod n,只是 1 到 n - 1 的重新排列,数字并不会重复。于是我们就可以知道

应用同余的乘法原理,使用同余的记号,可以将上式记为

将上式同时除以

,费马小定理得证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值