素数线性筛选——普通和改进版

前言:听完老师的课,发现原来素数筛选还可以这样优化下。这里所做的比较只是本人用编译器随意测的,如果有错或者更好的办法,欢迎各位评论留言

普通版:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1e8;	
ll a[N+9]={1,1,0};//dp[i] = 0表示i是素数,1表示非素数 
ll prime[N];
ll tot = 1;
int main()
{
	
	for(ll i=2;i<=N;i++)
	{
		if(a[i]) continue;//如果是非素数直接略过 
		else 
		{
			prime[tot++] = i;
		// cout<<"a"<<endl;
			for(ll j=2;j*i<=N;j++)
			{
				a[i*j] = 1;//i的倍数一定不是素数 
			} 
		}
	}
	cout<<"tot="<<tot<<endl;
// for(ll i=1;i<=tot-1;i++)
// {
	// cout<<prime[i]<<" ";
	// if(i%10==0) cout<<endl;
	
	//} 
	
	return 0;
} 

改进版:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1e8;	
ll a[N+9]={1,1,0};//dp[i] = 0表示i是素数,1表示非素数 
ll prime[N];
ll tot = 1;
int main()
{
	
	for(ll i=2;i<=N;i++)
	{
		if(a[i]) continue;//如果是非素数直接略过 
		else 
		{
			prime[tot++] = i;
		// cout<<"a"<<endl;
			for(ll j=i;j*i<=N;j++)
			{
				a[i*j] = 1;//i的倍数一定不是素数 
			} 
		}
	}
	cout<<"tot="<<tot<<endl;
// for(ll i=1;i<=tot-1;i++)
// {
	// cout<<prime[i]<<" ";
	// if(i%10==0) cout<<endl;
	
	//} 
	
	return 0;
} 

区别:

普通:

改进:

说明:改进后避免了大量重复判断,比如当i等于2时,4 6 8 12已经被标记为非素数。但是当i=3时,普通版又会标记6 9 12……为非素数,显然6 12已经被标记两次了。改进版i=2时,4 6 8 12为非素数,i=3时,9 12 被标记为非素数,这里虽然还是有重复计算,但是比普通版少了,当判断范围非常大时,还是可以避免许多的。

全部评论

相关推荐

皮格吉:不,有的厂子面试无手撕,可以试试。都是一边学一边面。哪有真正准备好的时候,别放弃
无实习如何秋招上岸
点赞 评论 收藏
分享
09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 你的mentor是什么样的人? #
3895次浏览 28人参与
# 你觉得mentor喜欢什么样的实习生 #
10253次浏览 284人参与
# 平安产险科技校招 #
2404次浏览 0人参与
# 帮我看看,领导说这话什么意思? #
6110次浏览 25人参与
# 没有家庭托举的我是怎么找工作的 #
12292次浏览 158人参与
# 怎么给家人解释你的工作? #
1371次浏览 16人参与
# 未岚大陆求职进展汇总 #
23819次浏览 112人参与
# 求职低谷期你是怎么度过的 #
5208次浏览 91人参与
# 26届秋招公司红黑榜 #
11934次浏览 41人参与
# 从哪些方向判断这个offer值不值得去? #
6545次浏览 93人参与
# 同bg的你秋招战况如何? #
158817次浏览 927人参与
# 度小满求职进展汇总 #
10078次浏览 51人参与
# 实习必须要去大厂吗? #
146625次浏览 1541人参与
# 校招泡的最久的公司是哪家? #
4531次浏览 22人参与
# 你有哪些缓解焦虑的方法? #
37173次浏览 835人参与
# 面试紧张时你会有什么表现? #
1694次浏览 20人参与
# 你喜欢工作还是上学 #
77572次浏览 860人参与
# 入职第一天,你准备什么时候下班 #
85471次浏览 467人参与
# 秋招想进国企该如何准备 #
97706次浏览 487人参与
# 简历无回复,你会继续海投还是优化再投? #
103582次浏览 819人参与
# 机械人的工作环境真的很差吗 #
25014次浏览 119人参与
# 独居后,你的生活是更好了还是更差了? #
28125次浏览 263人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务