用途

$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

[模板]线性筛素数(欧拉筛法)相关推荐

  1. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法

    Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...

  2. [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...

  3. 线性筛与欧拉函数、莫比乌斯函数

    网上关于素数筛的资料很多,这里只是给出弱鸟整理的几个线性筛和应用. 最朴素的素数筛--埃拉托斯特尼筛法(Sieve of Eratosthenes) 复杂度 Olognlogn int primes[ ...

  4. 欧拉线性筛 与 欧拉函数 + 几道例题

    欧拉线性筛 生成素数表prime[]数组 const int maxn = 1e7+5; int prime[maxn]; int visit[maxn]; void Prime(){memset(v ...

  5. 普及组模板——线性筛素数

    题目:[模板]线性筛素数(洛谷_3383) #include<iostream> #include<cstdio> #include<algorithm> #inc ...

  6. 【模板题】欧拉函数与线性筛求欧拉函数

    欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...

  7. 线性筛(欧拉筛)——算法解析

    算法简介: 欧拉筛是一个能够做到O(n)O(n)O(n)的时间复杂度,也就是线性的质数筛法,是目前性能最优秀的质数筛法.在很多算法和数据结构题目中都有大量的应用,是一个十分基础的工具.对于一个频繁使用 ...

  8. 素数筛法(传统普通、朴素筛法、埃式筛法、欧拉筛法(线性筛))

    素数筛法(普通.朴素筛法.埃式筛法.欧拉筛法) 1.题目 2.分析 3.代码 传统普通 朴素筛法 朴素筛法(6.14) 埃式筛法 埃式筛法(6.14) 欧拉筛法(线性筛) 欧拉筛法(线性筛 6.14) ...

  9. 筛选质数,埃氏筛和欧拉筛(线性筛)

    求len之内的所有的素数 除了比较常用的开根号的求法,还有两种更好的方法,埃氏筛和线性筛.其中埃氏筛更好理解,而线性筛(欧拉筛)不好理解但是更快. 埃氏筛 #include <bits/stdc ...

  10. 快速求素数表——埃氏筛法与欧拉筛法

    快速求素数表--埃氏筛法与欧拉筛法 快速求素数表埃氏筛法与欧拉筛法 埃氏筛法 埃氏筛法原理 埃氏筛法时间复杂度 埃氏筛法代码求出1000000以内的素数并且输出n个素数 欧拉筛法 欧拉筛法原理 欧拉筛 ...

最新文章

  1. PHP性能调优,PHP慢日志---PHP脚本执行效率性能检测之WebGrind的使用
  2. 802.11n 连接的建议设置是什么?
  3. Matlab调整子图位置及大小(祛白边)+调整画布大小+添加总标题
  4. 让对话框不显示边框_微信消息“无边框”模式搭配这款壁纸,简直绝了
  5. 小议同步IO :fsync与fdatasync
  6. 文本框输入怎么样让键盘消失
  7. python封装举例_Python+Pycharm—学习1—封装导入
  8. 【华为云技术分享】【Python算法】分类与预测——决策树
  9. 来了!iPhone 12今晚天猫首销:12期分期免息,还送5G流量包
  10. DPDK笔记 RSS(receive side scaling)网卡分流机制
  11. 计算机应用技术老师全国计算机应用技术考试,全国计算机应用证书 全国计算机应用技术证书考试作业.doc...
  12. Atitit mvc之道 attilax著 以vue为例 1. Atitti vue的几大概念 1 1.1. 声明式渲染 1 1.2. 条件与循环 2 1.3. 处理用户输入 click事件 2 1
  13. usb杂谈之获取设备信息——举例鼠标urb
  14. iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配
  15. 【win10升级】我们无法更新系统保留的分区
  16. H5页面设计器,仿有赞商城页面在线设计器,比富文本框更友好的内容编辑器...
  17. android模拟器超级root,android模拟器root,avd root,emulator root教程
  18. php实现手机归属地的查询、,PHP之cURL实现手机号码归属地查询功能
  19. LAMP虚拟主机架设论坛
  20. 台式计算机强制关机,台式电脑强制关机按什么键

热门文章

  1. 谈谈JProfiler的实现原理
  2. eclipse中如何搜索带\的字串
  3. python POST发送多个段(如json消息+文件)
  4. LINUX下opencv的编译安装
  5. 为了方便手机观看,博文最好36个字一行
  6. 管理感悟:不能放任下属,必须定时检查工作
  7. Libmicrohttpd简介
  8. mysql教程 触发器_实现MySQL触发器的实际操作步骤
  9. java session重复登录_Java开发网 - Hibernate:session中对象重复问题的解决方法(原创)...
  10. android屏蔽按键精灵,安卓按键精灵的,关闭app程序问题!