信息学奥赛一本通 2040:【例5.7】筛选法找质数 (普通筛 线性筛)

本文介绍了信息学奥赛中的筛选法找质数,包括普通筛法(埃拉托色尼筛法)和线性筛(欧拉筛)。普通筛法通过删除倍数直到N的平方根,复杂度为O(nloglogn);线性筛则通过每个合数只通过最小质因数被筛掉,复杂度为O(n)。并给出了两种筛法的C++代码实现。
摘要由CSDN通过智能技术生成

【题目考点】
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值