很多自然数都可分解成一些更小的数(直至不可再分,即为素数)的乘积,例如 12=4×3,其中 4=2×2,因此 12=2×2×3。而此时,2 和 3都不可再继续进行分解了,它们是最基本、最纯净的数,我们就把这样的数叫做“质数”或者“素数”。同样地,2/3/5/7/11/13等等都是不可分解的,它们也都是质数。它们是自然数的构件(building blocks),是自然数世界的基本元素。12 由两个 2 和一个 3 组成,正如水分子(H2O)是由两个氢原子和一个氧原子组成的一样。只不过,和化学世界不同的是,自然数世界里的基本元素是无限的——质数有无穷多个。
关于为什么质数有无穷多个,欧几里得有一个非常漂亮的证明。反证法进行证明,假如质数只有有限个,其中最大的那个质数为 P(既然是最大的,也即,凡大于
需要补充的的一点是,这个证明容易让人产生误解,即把头
从欧几里得时代就开始,人们近乎疯狂地想要认识自然数的本质规律。组成自然数的基本元素(也即是质数)自然就成为了一个绝佳的突破口,于是对质数的研究成为了探索自然数世界的一个永久的话题。也是今天所说的“数论”。
用质数理论来研究说,真的会非常方便。a 是
- 12 中有两个2,180 中也有两个2
- 12 中有一个3,180 中有两个3
- 180 中还包含 12 中没有的质数,也即是 5;
- 对于每一种质数,12 里面所含的个数都比不过 180,这其实是表明 12 是 180 的约数;
假设 a=36=2×2×3×3,b=120=5!=2×2×2×3×5,那么,a 和
- 这个最大公约数最多可以包含多少个质数2?显然最多包含 2 个,否则无法整除 36
- 这个最大公约数最多可以包含多少个质数 3?显然只有一个,否则无法整除 120.
- 这个最大公约数最多可以包含多少个质数 5?显然一个都不能有,否则无法整除 36;
- 因此,36 和 120 的最大公约数为 2×2×3=12
我们接着来看 a 和
这其实也不奇怪,在最大公约数里面,每种质数有多少个,取决于 a 和
在最小公倍数的构成里面,每种质数有多少个,取决于 a 和
两者“互补”,最大公约数与最小公倍数乘在一起,也就相当于把 a 和
两数互质,相当于说这两个数不包含任何相同的质数,如果 a 与
关于质数,有很多有趣美妙的定理。1640年,法国业余数学家 Pierre de Fermat(也即是费马大定理的提出者:费马)发现,如果
Fermat 小定理有一个等价的表述:如果
- 这是因为 n|an−a,也即 an≡a(modn),也即依次计算 a1,a2,…,an 关于 n 的余数时,
an 余数将会变得和 a1(最开始的)相同, - 另一方面,ai%n 的余数,完全由前一项 ai−1%n (所决定)。比如 33/7 的 3余6,这表明,33 里包含 3 个 7 以及一个 6;因此,34 里就包含 9 个 7(能够被7整除) 以及 3个6。为了得到 34=33⋅3 关于 7 的余数,只需要看 18 除以 7 余多少就行了。可见,要想计算
ai 关于 n 的余数,ai%n=[a⋅(ai−1%n)]%n - 综上,得证
>>> a, n, N = 3, 7, 20
>>> [a**i%n for i in range(1, N)]
[
3, 2, 6, 4, 5, 1,
3, 2, 6, 4, 5, 1,
3, 2, 6, 4, 5, 1,
3]
需要注意的是,n−1 并非是最小的周期。我们来看 2i 除以7的余数情况,7−1=6 也是一个周期,但 3 其实是它更小的周期:
>>> a, n, N = 2, 7, 20
>>> [a**i%n for i in range(1, N)]
[2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2]
如果除数 n 不是质数(而非质数是由质数构成),比如是两个质数的乘积(比如 35),周期的长度又会怎样呢?
>>> a, n, N = 3, 35, 37
>>> l = [a**i%n for i in range(1, 1+N)]
>>> print([l[i*12:(i+1)*12] for i in range(len(l))])
[ [3, 9, 27, 11, 33, 29, 17, 16, 13, 4, 12, 1],
[3, 9, 27, 11, 33, 29, 17, 16, 13, 4, 12, 1],
[3, 9, 27, 11, 33, 29, 17, 16, 13, 4, 12, 1]
]
类似地,假如某个整数 n 等于两个质数
1736年,瑞士大数学家 Leonhard Euler(欧拉)对此进行了进一步的研究,讨论了当 n 是更复杂的数时推导余数序列循环周期的方法,得到了一个非常漂亮的结果:在 1 到