模板

int primes[N], cnt;     // primes[]存储所有素数
bool st[N];         // st[x]存储x是否被筛掉void get_primes(int n)
{for (int i = 2; i <= n; i ++ ){if (!st[i]) primes[cnt ++ ] = i;for (int j = 0; primes[j] <= n / i; j ++ ){st[primes[j] * i] = true;if (i % primes[j] == 0) break;}}
}

题目

给定一个正整数n,请你求出1~n中质数的个数。

输入格式

共一行,包含整数n。

输出格式

共一行,包含一个整数,表示1~n中质数的个数。

数据范围

1≤n≤106

输入样例:

8

输出样例:

4

void get_primes(){//外层从2~n迭代,因为这毕竟算的是1~n中质数的个数,而不是某个数是不是质数的判定for(int i=2;i<=n;i++){if(!st[i]) primes[cnt++]=i;for(int j=0;primes[j]<=n/i;j++){//primes[j]<=n/i:变形一下得到——primes[j]*i<=n,把大于n的合数都筛了就//没啥意义了st[primes[j]*i]=true;//用最小质因子去筛合数//1)当i%primes[j]!=0时,说明此时遍历到的primes[j]不是i的质因子,那么只可能是此时的primes[j]<i的//最小质因子,所以primes[j]*i的最小质因子就是primes[j];//2)当有i%primes[j]==0时,说明i的最小质因子是primes[j],因此primes[j]*i的最小质因子也就应该是//prime[j],之后接着用st[primes[j+1]*i]=true去筛合数时,就不是用最小质因子去更新了,因为i有最小//质因子primes[j]<primes[j+1],此时的primes[j+1]不是primes[j+1]*i的最小质因子,此时就应该//退出循环,避免之后重复进行筛选。if(i%primes[j]==0) break;}}}

~~线性筛法求素数(附模板题)相关推荐

  1. 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)

    一.素数筛的定义 给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题). 二.埃氏筛法(Eratosthenes筛法) 埃氏筛法又叫做Eratosthenes筛法 ...

  2. 一般筛法和快速线性筛法求素数 求素数的一点总结

    素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...

  3. 一般筛法求素数+快速线性筛法求素数

    一般筛法求素数+快速线性筛法求素数 标签: 正则表达式算法优化扩展c 2010-08-22 01:28 28738人阅读 评论(8) 收藏 举报  分类: 算法学习资料(5)  版权声明:本文为博主原 ...

  4. 欧拉线性筛法求素数(顺便实现欧拉函数的求值)

    标签:欧拉筛法   素数   欧拉函数   phi 我们先来看一下最经典的埃拉特斯特尼筛法.时间复杂度为O(n loglog n) int ans[MAXN]; void Prime(int n) { ...

  5. 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验

    普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...

  6. 素数筛法求素数(线性时间)

    摘自:http://blog.csdn.net/once_hnu/article/details/6302283 逆向思维的典型应用! 1)普通方法判断素数:O(n*sqrt(n)) 2)筛法求素数: ...

  7. AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)

    给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...

  8. 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】

    素数和合数共同的性质: 1.a > 1是合数,当且仅当a = b * c,其中1 < b < a,1 < c < a. 2.合数必有素数因子. 3.如果d > 1, ...

  9. CodeForce 236B Easy Number Challenge(筛法求素数 + 整数因式分解)

    题目链接:http://codeforces.com/problemset/problem/236/B Easy Number Challenge time limit per test 2 seco ...

最新文章

  1. VS Debug必备技能
  2. python3.6.4安装教程-python3.6.4如何安装到树莓派3代
  3. play2框架 jpa mysql_单元测试 – Playframework 2.2.x Java JPA – 用于单元测试和生产的独立数据库...
  4. 信息学奥赛一本通(1054:三角形判断)
  5. Android 系统(43)---HTTPS
  6. java新手笔记16 面积
  7. 让C# Excel导入导出,支持不同版本的Office
  8. 《Spring揭秘》
  9. ngrok转发mysql连接_使用小米球 -Ngrok 实现内网转发
  10. coreseek添加新词库
  11. 计算机毕业设计Java河池市旅游信息系统(源码+系统+mysql数据库+lw文档)
  12. 产品经理应该如何学习
  13. 认清GPU的流处理器作用
  14. win7 android 双系统平板 p1000,优派Win7/Android双系统ViewPad 100
  15. 【旧文集】解忧杂货店读后感悟-记于2016年底
  16. Simulink仿真时间、步长、精度和解法器设置
  17. IDEA 2021.1 的 Win 和 Mac 快捷键大全!!
  18. ubuntu安装androidstudio
  19. 关于放大器中的SR参数
  20. docker php安装gd扩展_docker php 容器安装GD库

热门文章

  1. 《我也能做CTO之程序员职业规划》推荐序
  2. apache http php,性能-安装HTTP使用PHP和Apache使标头失效
  3. struts2(一) struts2入门
  4. 设计模式学习--工厂模式
  5. 【网络安全面试题】——如何渗透测试文件目录穿越
  6. SELinux系列(十二)安全上下文的修改和设置(chcon和restorecon命令)
  7. hibernate执行sql语句 查询 删除
  8. django进阶05中间件
  9. 安装库_python的库的安装
  10. 不会代码也想做酷炫大屏?30份精美可视化模板送给你