ACM竞赛数学学习笔记

欧拉筛的证明

之前一直都是贴板子。今天花了一点时间看了下证明,原来是如此简洁优雅。欧拉大神orz

一。正确性。 对于任何一个合数C,设p为C的最小质因子,令A=C/p,那么显然有A的最小质因子大于等于p,于是在进行到A枚举已存储的质数时,枚举到A的最小质因子之前p一定被枚举到了,于是C一定被筛出了。这就证明了所有的合数都会被筛出,也就证明了欧拉筛的正确性。

二。时间的线性。 只需要证明任何一个合数都不会被重复筛。 观察欧拉筛的过程发现所有的合数都是以一个质数乘另一个数的形式被筛出的。那么设C=A·p1,p1是C的最小质因子,假设存在另一组数满足C=B·p2,则有p2大于等于p1,而B的质因子必然包含p1,那么当进行到B的时候,在枚举到p1的时候就已经退出循环,于是C不会被重复筛出。即证明了时间复杂度。

猜你喜欢

转载自www.cnblogs.com/vege-chicken-rainstar/p/11735216.html