欧拉筛 筛法求素数 及其例题 时间复杂度O(n)

news/2024/7/5 8:46:15

埃式筛法尽管不错,但是确实做了许多无用功,某个数可能会被重复的筛好几次,欧拉筛解决了这个方法,下面为代码:
注意理解if(i%prim[j]==0) break;
大佬讲的不错的博客,我就不做复读机了。
点我传送

void ispirm(){int cnt=0;memset(visited,true,sizeof(visited));for(int i=2;i<=maxn;i++){if(visited[i]) prim[cnt++]=i;for(int j=0;j<cnt&&prim[j]*i<=maxn;j++){visited[prim[j]*i]=false;if(i%prim[j]==0) break;}}
}

学会了欧拉筛法的话,下面有个经典例题,查询某段区间内质数的个数
题目链接:点我传送
这里用前缀和处理一下就可以再O(1)的时间复杂度情况查出了。

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e7;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;
bool visited[maxn+10];
int prim[1000000+5];
int ans[maxn+10];
void ispirm(){int cnt=0;memset(visited,true,sizeof(visited));for(int i=2;i<=maxn;i++){if(visited[i]) prim[cnt++]=i;for(int j=0;j<cnt&&prim[j]*i<=maxn;j++){visited[prim[j]*i]=false;if(i%prim[j]==0) break;}}
}
int main()
{ispirm();int t;cin>>t;for(int i=2;i<=maxn;i++){ans[i]=ans[i-1]+visited[i];}while(t--){int x,y;scanf("%d%d",&x,&y);printf("%d\n",ans[y]-ans[x-1]);}return 0;
}

http://lihuaxi.xjx100.cn/news/285787.html

相关文章

Windows 95被做成了App,可玩扫雷和纸牌

6 秒重温 Windows95 开机画面 作者 | 琥珀 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; “看到 Win95&#xff0c;再看到仙剑 DOS 的画面&#xff0c;突然有种想哭的感觉&#xff0c;小时候帮李逍遥实现了仗剑江湖的愿望&#xff0c;但自己却没有实现自己的愿望…

基于zabbix用Python写一个运维流量气象图

前言&#xff1a;同事问我&#xff0c;你写运维平台最先写哪一部分&#xff1f;好吧&#xff0c;还真把我问倒了&#xff0c;因为这是在问最应该放在放在第一位的东西~作为一个工作不足两年&#xff0c;运维不足一年的新手来说&#xff0c;还真不敢妄下评论&#xff0c;其实按照…

北京大学计算机女博士经常看什么资料?

今天&#xff0c;给大家推荐几个排名非常靠前的人工智能方向的公众号&#xff0c;不论从文章质量&#xff0c;还是阅读推广量&#xff0c;都是值得大家关注的。不需要您费力寻找&#xff0c;只要花几分钟进行阅读收藏&#xff01;&#xff01;AI有道一个值得关注的 AI 技术的公…

poj1603(Flody算法)

题意&#xff1a;题目确定只有20个国家&#xff0c;之间存在边界的话&#xff0c;距离设置为1。前面的19行&#xff0c;首先第i&#xff08;1-19&#xff09;行给出一个x&#xff0c;代表x后面跟的国家数&#xff0c;表示第i行和后面的国家之间存在边界&#xff0c;设置为1.第2…

log包在Golang语言的标准库中是怎么使用的?

Golang 语言的标准库中提供了一个简单的 log 日志包&#xff0c;它不仅提供了很多函数&#xff0c;还定义了一个包含很多方法的类型 Logger。但是它也有缺点&#xff0c;比如不支持区分日志级别&#xff0c;不支持日志文件切割等。 01、介绍 Golang 语言的标准库中提供了一个简…

DT时代下[个推3.0]遵循的四个法则

DT(Data Technology)&#xff0c;是以服务大众、激发生产力为主的技术。从IT时代走向DT时代&#xff0c;我们要思考如何用互联网技术、理念、思想去与传统行业进行交融和共同发展。 1.数据是决策的基本依据数亿客户端情况下&#xff0c;如何迅速定位&#xff1f;譬如&#xff1…

全栈AI工程师指南,DIY一个识别手写数字的web应用

作者 | shadow chi本文经授权转载自 无界社区mixlab&#xff08;ID&#xff1a;mix-lab&#xff09;网上大量教程都是教如何训练模型&#xff0c;往往我们只学会了训练模型&#xff0c;而实际应用的环节是缺失的。def AIFullstack&#xff08; &#xff09;&#xff1a;本文从「…

三国时期,假如曹操是一名程序员,历史会发生什么?--文末送书

点击上方[视学算法]→右上角[...]→[设为星标⭐]“东汉网络科技有限公司&#xff0c;本来是一家名扬四海的家族企业&#xff0c;可由于近几年来&#xff0c;越来越多的亲戚&#xff0c;在公司担任重要岗位&#xff0c;真正的人才越来越少&#xff0c;东汉网络开始走向了衰落。身…