试除法:

bool is_prime(int n)
{if (n <= 1) return false;for (int i = 2;i<=sqrt(n);i++)//这样写更好!if (n % i==0) return false;return true;
}

埃式筛选法:

const int N = 1e7;
int prime[N + 1];
bool vis[N + 1];int n_prime(int n) {int k = 0;memset(vis, 0, sizeof(vis));for (int i = 2; i <= n; i++)if (!vis[i]) {prime[k++] = i;for (int j = 2 * i; j <= n; j += i)vis[j] = true;}return k;
}

优化后的埃式筛选法:

const int N = 1e7;
int prime[N + 1];
bool vis[N + 1];bool n_prime(int n) {memset(vis, 0, sizeof(vis));for (int i = 2; i <= n; i++) {if (!vis[i])for (int j = i * i; j <= n; j += i)vis[j] = true;}int k = 0;for (int i = 2; i <= n; i++)if (!vis[i])prime[k++] = i;return k;
}

题目描述
用筛法求之N内的素数。
输入
N
输出
0~N的素数
样例输入

100

样例输出

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

举例:
代码如下:

#include <iostream>
using namespace std;
int k;
const int N = 10010;
int p[N];
bool vis[N];void fff(int n)
{for (int i = 2;i<=n;i++)if (!vis[i])for (int j = i*i;j<=n;j+=i){vis[j] = true;}k = 0;for (int i = 2;i<=n;i++){if (!vis[i]) p[k++] = i;}
}int main()
{int n;cin>>n;fff(n);for (int i = 0;i<k;i++){cout<<p[i]<<endl;}return 0;
}

素数-试除法和埃式筛选法模板相关推荐

  1. 【素数问题】整理几种计算素数的算法,包含:两层循环,开根号法,埃氏筛选法,欧拉筛选法

    这篇文章主要介绍素数相关的算法问题,包含:两层循环判断,开根号法,埃氏筛选法,欧拉筛选法. 目录 一.什么是素数 二.素数计算几种方式 2.1.两层循环

  2. python筛选法求素数讲解_埃氏筛选法求素数 Python

    代码如下 def _odd_iter(): # 构建奇数序列 从3开始 n = 1 while True: n = n + 2 yield n def _not_divisible(n): retur ...

  3. ~~试除法求所有约数(附模板题)

    模板 vector<int> get_divisors(int x) {vector<int> res;for (int i = 1; i <= x / i; i ++ ...

  4. 筛选法与试除法 判断素数

    素数的求解方法 第一种:试除法 第二种:筛选法 ------试除法------- 顾名思义:求一个数X是不是素数,就试用小于x大于1区间的自然数,只要有一个能整除,那么x就不是素数,否则就是. 以输出 ...

  5. 埃拉托色尼筛选法巧解质数问题(埃氏筛法求解素数问题)

    背景: 素数(即质数)问题是老问题了,程序员面试问题,大小比赛的热门题. 比如 最简单的判断素数问题,或者计算素数的个数,等等. 简单的判断素数函数: 素数的定义:指在大于1的整数中,只能被1和它本身 ...

  6. 经典算法——筛选法求素数(素数筛选)

    [数值问题]素数筛选 内存限制:128 MB时间限制:1.000 S 题目描述 输入一正整数n(2<=n<=5*10^6),按顺序输出2到n范围内的所有素数. 输入 输入共一行一个数,表示 ...

  7. NUC1305 哥德巴赫猜想【筛选法】

    哥德巴赫猜想 时间限制: 1000ms 内存限制: 65536KB 问题描述 对于任何偶数N大于或等于4 ,存在着至少一双素数P1和P2这样 N=P1+P2 输入描述 每行输入一个偶数,在4到215 ...

  8. 埃拉托色尼筛选法(Eratosthenes Sieve)分析

    最近看<java核心技术>看到集合章节,在最后位集(BitSet)部分给出了一个示例程序,使用了埃拉托色尼筛选法(Eratosthenes Sieve)求自然数2~n范围的所有素数 代码如 ...

  9. Eratosthenes筛选法(C++版)

    Sieve of Eratosthenes 使用埃拉托斯特尼筛选法计算小于100000的素数. 埃拉托斯特尼筛选法是最为知名的产生素数的筛选法,适用于产生最小的N个素数. 该方法的唯一缺点是使用的存储 ...

最新文章

  1. Asp.net MVC JsonResult 忽略属性
  2. 现代确认以约10亿美元收购波士顿动力 | AI日报
  3. 线程的生命周期和状态控制
  4. jdbc连接数据scanip_java数据库连接_jdbc
  5. 域用户配置文件的漫游配置
  6. leetcode198 打家劫舍
  7. redux 源码详解
  8. 如何在终端编译C++代码
  9. VS2010中的顺序图
  10. spring boot配置ip_Zookeeper作为配置中心使用说明
  11. RocketMQ 源码分析 14 事务消息02
  12. USB TO I2C(上海同旺电子)调试器调试LM75A--TI
  13. 小米10T和小米10T Pro的区别
  14. 路由器和网络互连实验
  15. java数据类型图:
  16. 51单片机按键消抖方式总结
  17. 2021Java进阶学习资料!java自学宝典pdf下载
  18. bzoj 3157: 国王奇遇记3516: 国王奇遇记加强版
  19. win10如何开放端口
  20. 第十三章 半监督学习

热门文章

  1. 【遥感数字图像处理】基础知识:第三章 遥感数字图像几何处理
  2. 编译C程序提示之'for' loop initial declaration used outside C99 mode
  3. Android之自定义属性,format详解
  4. [python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充
  5. python typeerror* wants int_python-TypeError:’int’对象是不可迭代的?
  6. 基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework
  7. python开机号_感知机(python实现)
  8. 100 万在中国不同地方能活多久?
  9. Boosting集合算法详解(一)
  10. 头文件定义全局变量_5.2 C++局部变量与全局变量 | 输出局部全局变量