整除复习

简要整理一下第一章中比较有趣的内容

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的真因数

这个定理广泛使用在各种分解整数的方法里,费马方法,连分数法,筛法

posted @ 2019-12-11 23:32  讲成大家听不懂的样子  阅读(348)  评论(0编辑  收藏  举报