[模板]线性筛素数(欧拉筛法)
用途
$O(n)$处理出n以内所有素数
原理
使用 合数=最大因数(除1和本身外)*最小质因数 的原理来筛,每个数只会被筛一次
对于每个数i,令它是某数的最大因数,然后从小到大地找<=i的素数j,则i*j是合数
直到找到某个j使得$i\%j==0$,因为再往后的话,j'> i的某个因子,我们能交换j'和i的这个因子,所以i不是i*j'的最大因数(或者说i*j'的最小质因数是刚才的那个j),再往后做没有意义
例题
luogu3383
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 using namespace std; 6 const int maxn=10000010; 7 8 int rd(){ 9 int x=0;char c=getchar();int neg=1; 10 while(c<'0'||c>'9'){ 11 if(c=='-') neg=-1;c=getchar(); 12 } 13 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); 14 return x*neg; 15 } 16 17 int N,M; 18 int pri[maxn],cnt; 19 bool isp[maxn]; 20 21 int main(){ 22 int i,j,k; 23 N=rd();M=rd(); 24 memset(isp,1,sizeof(isp));isp[0]=isp[1]=0; 25 for(i=2;i<=N;i++){ 26 if(isp[i]) pri[++cnt]=i; 27 for(j=1;j<=cnt&&i*pri[j]<=N;j++){ 28 isp[i*pri[j]]=0; 29 if(i%pri[j]==0) break; 30 } 31 } 32 33 for(i=1;i<=M;i++){ 34 if(isp[rd()]) printf("Yes\n"); 35 else printf("No\n"); 36 } 37 }
转载于:https://www.cnblogs.com/Ressed/p/10034540.html
[模板]线性筛素数(欧拉筛法)相关推荐
- 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法
Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...
- 线性筛与欧拉函数、莫比乌斯函数
网上关于素数筛的资料很多,这里只是给出弱鸟整理的几个线性筛和应用. 最朴素的素数筛--埃拉托斯特尼筛法(Sieve of Eratosthenes) 复杂度 Olognlogn int primes[ ...
- 欧拉线性筛 与 欧拉函数 + 几道例题
欧拉线性筛 生成素数表prime[]数组 const int maxn = 1e7+5; int prime[maxn]; int visit[maxn]; void Prime(){memset(v ...
- 普及组模板——线性筛素数
题目:[模板]线性筛素数(洛谷_3383) #include<iostream> #include<cstdio> #include<algorithm> #inc ...
- 【模板题】欧拉函数与线性筛求欧拉函数
欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...
- 线性筛(欧拉筛)——算法解析
算法简介: 欧拉筛是一个能够做到O(n)O(n)O(n)的时间复杂度,也就是线性的质数筛法,是目前性能最优秀的质数筛法.在很多算法和数据结构题目中都有大量的应用,是一个十分基础的工具.对于一个频繁使用 ...
- 素数筛法(传统普通、朴素筛法、埃式筛法、欧拉筛法(线性筛))
素数筛法(普通.朴素筛法.埃式筛法.欧拉筛法) 1.题目 2.分析 3.代码 传统普通 朴素筛法 朴素筛法(6.14) 埃式筛法 埃式筛法(6.14) 欧拉筛法(线性筛) 欧拉筛法(线性筛 6.14) ...
- 筛选质数,埃氏筛和欧拉筛(线性筛)
求len之内的所有的素数 除了比较常用的开根号的求法,还有两种更好的方法,埃氏筛和线性筛.其中埃氏筛更好理解,而线性筛(欧拉筛)不好理解但是更快. 埃氏筛 #include <bits/stdc ...
- 快速求素数表——埃氏筛法与欧拉筛法
快速求素数表--埃氏筛法与欧拉筛法 快速求素数表埃氏筛法与欧拉筛法 埃氏筛法 埃氏筛法原理 埃氏筛法时间复杂度 埃氏筛法代码求出1000000以内的素数并且输出n个素数 欧拉筛法 欧拉筛法原理 欧拉筛 ...
最新文章
- PHP性能调优,PHP慢日志---PHP脚本执行效率性能检测之WebGrind的使用
- 802.11n 连接的建议设置是什么?
- Matlab调整子图位置及大小(祛白边)+调整画布大小+添加总标题
- 让对话框不显示边框_微信消息“无边框”模式搭配这款壁纸,简直绝了
- 小议同步IO :fsync与fdatasync
- 文本框输入怎么样让键盘消失
- python封装举例_Python+Pycharm—学习1—封装导入
- 【华为云技术分享】【Python算法】分类与预测——决策树
- 来了!iPhone 12今晚天猫首销:12期分期免息,还送5G流量包
- DPDK笔记 RSS(receive side scaling)网卡分流机制
- 计算机应用技术老师全国计算机应用技术考试,全国计算机应用证书 全国计算机应用技术证书考试作业.doc...
- Atitit mvc之道 attilax著 以vue为例 1. Atitti vue的几大概念	1 1.1. 声明式渲染	1 1.2. 条件与循环	2 1.3. 处理用户输入 click事件	2 1
- usb杂谈之获取设备信息——举例鼠标urb
- iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配
- 【win10升级】我们无法更新系统保留的分区
- H5页面设计器,仿有赞商城页面在线设计器,比富文本框更友好的内容编辑器...
- android模拟器超级root,android模拟器root,avd root,emulator root教程
- php实现手机归属地的查询、,PHP之cURL实现手机号码归属地查询功能
- LAMP虚拟主机架设论坛
- 台式计算机强制关机,台式电脑强制关机按什么键
热门文章
- 谈谈JProfiler的实现原理
- eclipse中如何搜索带\的字串
- python POST发送多个段(如json消息+文件)
- LINUX下opencv的编译安装
- 为了方便手机观看,博文最好36个字一行
- 管理感悟:不能放任下属,必须定时检查工作
- Libmicrohttpd简介
- mysql教程 触发器_实现MySQL触发器的实际操作步骤
- java session重复登录_Java开发网 - Hibernate:session中对象重复问题的解决方法(原创)...
- android屏蔽按键精灵,安卓按键精灵的,关闭app程序问题!