【题目考点】
1. 普通筛法找质数(埃拉托色尼筛法)
基本思想:把从2到N的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍数,直到N \sqrt{N}
N
的倍数为止,剩余的即为2~N之间的所有质数。
普通筛法复杂度为:O ( n l o g l o g n ) O(nloglogn)O(nloglogn)
为什么直到N \sqrt{N}
N
的倍数为止,以下是证明:
命题:对于整数n满足N < n ≤ N \sqrt{N} < n \le N
N
<n≤N,n是质数,或n是合数时,存在一个整数a满足a ≤ N a \le \sqrt{N}a≤
N
,a是n的因数。
证明:显然n可以是质数。如果n是合数,使用反证法。
假设n是合数时,n的因数(除了1)都大于N \sqrt{N}
N
。由于n是合数,n至少有两个不为1或n的因数,设为a,b,且存在等式a ⋅ b ⋅ x = n a\cdot b\cdot x = na⋅b⋅x=n,其中x是某个正整数。
有a > N , b > N ⇒ a ⋅ b > N ≥ n a>\sqrt{N}, b>\sqrt{N} \Rightarrow a\cdot b >N\ge na>
N
,b>
N
⇒a⋅b>N≥n,即a ⋅ b > n a\cdot b > na⋅b>n