筛选求素数

题目链接:https://bzoj.org/d/rumen/p/488
Description
桐桐在学完了上节课的知识后,对信息学越发感兴趣了。桐桐是一个很善于思考的学生,她发现上节课中例题的n 最大是40000,如果数据再大一些,比如n=10^7,那么判断素数的算法能否在1秒内给出答案呢?桐桐用程序实际测试 的时间超过了 1秒,你能帮助桐桐解决这个难题吗?
Input
一个正整数n(1<n≤10^7)。
Output
输出不大于n的所有素数
Samples
输入数据 1
10
输出数据 1
2 3 5 7

Sol:代码十分简单,就是筛的时候要从2开始
代码:

#include<bits/stdc++.h>
using namespace std;
bool f[10000010];
int main()
{
	int n;	
	cin>>n;	
	for(int i=2;i*i<=n;i++)	
		if(!f[i])	
			for(int j=i;j<=n/i;j++)
				f[i*j]=true;
	for(int i=2;i<=n;i++)
		if(f[i]==false)
			cout<<i<<endl;
	return 0;
}

点个赞再走吧!

posted @   Ace基德  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示