整除复习
简要整理一下第一章中比较有趣的内容
1.筛法:
Eratosthenes筛法
原理:从2开始,没有被筛掉的数一定是质数,因为它不被任何小于它的素数整除,再用它的整数倍筛掉后面的数
更加高效的方法是线性筛
原理:让每一个合数被自己最大的真因子筛掉,反过来,也就是当我们碰到一个数x时,能用它筛掉哪些数呢?
举个栗子,我们扫描到了15=3*5,那么2*15=30一定要被15筛掉,因为30的最大真因子就是15了,那么45=3*15也该被筛掉。
合数*15一定不是被15筛掉的,不用考虑
但是5*15呢?不能筛掉,因为对于5*15,我们能找到一个更大的因子,就是用5替换掉原来最小的素因子3,就是5*5=25,它就是更大的真因子了
总结下,当我们扫描到一个数x时,就筛去2x,...pnx直到第一个pn整除x,这就是线性筛的原理。
为什么说线性呢,因为每个元素至多访问两次。
最后,筛法是确定性的素数判别方法,这有别于我们以后要提到的素性检测方法,但是筛法只适用于小范围。
2.欧几里得算法:
这个算法虽然看起来很简单,但是是很多东西的基石
扩展的欧几里得算法给出了as+bt=(a,b)(贝祖等式)的求解方法,这很好地证明了a与b互素的话a模b是有逆元的。
欧几里得算法和连分数的渐近分数也是有关系的,我们知道渐近分数是既约分数,那么它们的最大公约数是1
将渐近分数展开成连分数的形式就相当于运行了一次欧几里得算法,这个问题留到以后讨论连分数的时候再做解释
欧几里得算法的复杂度,它最坏的时候过程等价于一个斐波那契数列,复杂度也就是一个指数函数的反函数,对数级别的
下面证明 a1,a2...an的最大公约数是线性组合S=x1*a1+x2*a2+....xn*an所能表示的最小正整数
记S中最小正整数为s0,显然d|s0
下面再证明s0|d 设ai=qi*s0+ri(带余数除法,ri>=0)
那么ri是属于S的,因为ai是xi取1,其他系数取0的线性组合,qi*s0是对线性组合s0的qi倍倍乘,也是线性组合,故ri属于S
注意到每一个ri都是小于s0的,而s0是S中最小的正整数,故全部ri=0
这样就有所有的ai=qi*s0,也就是s0整除ai,故s0整除d
所以d=s0.
3.整数分解定理
这一章还有一个有趣的定理就是它了,意义还是很明显的,这里就抄一遍:
给定正合数n 如果存在整数a,b使得 n|a2-b2 ,n不整除a-b和a+b
那么(n,a-b),(n,a+b)都是n的真因数
这个定理广泛使用在各种分解整数的方法里,费马方法,连分数法,筛法