素数-试除法和埃式筛选法模板
试除法:
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;
}
素数-试除法和埃式筛选法模板相关推荐
- 【素数问题】整理几种计算素数的算法,包含:两层循环,开根号法,埃氏筛选法,欧拉筛选法
这篇文章主要介绍素数相关的算法问题,包含:两层循环判断,开根号法,埃氏筛选法,欧拉筛选法. 目录 一.什么是素数 二.素数计算几种方式 2.1.两层循环
- python筛选法求素数讲解_埃氏筛选法求素数 Python
代码如下 def _odd_iter(): # 构建奇数序列 从3开始 n = 1 while True: n = n + 2 yield n def _not_divisible(n): retur ...
- ~~试除法求所有约数(附模板题)
模板 vector<int> get_divisors(int x) {vector<int> res;for (int i = 1; i <= x / i; i ++ ...
- 筛选法与试除法 判断素数
素数的求解方法 第一种:试除法 第二种:筛选法 ------试除法------- 顾名思义:求一个数X是不是素数,就试用小于x大于1区间的自然数,只要有一个能整除,那么x就不是素数,否则就是. 以输出 ...
- 埃拉托色尼筛选法巧解质数问题(埃氏筛法求解素数问题)
背景: 素数(即质数)问题是老问题了,程序员面试问题,大小比赛的热门题. 比如 最简单的判断素数问题,或者计算素数的个数,等等. 简单的判断素数函数: 素数的定义:指在大于1的整数中,只能被1和它本身 ...
- 经典算法——筛选法求素数(素数筛选)
[数值问题]素数筛选 内存限制:128 MB时间限制:1.000 S 题目描述 输入一正整数n(2<=n<=5*10^6),按顺序输出2到n范围内的所有素数. 输入 输入共一行一个数,表示 ...
- NUC1305 哥德巴赫猜想【筛选法】
哥德巴赫猜想 时间限制: 1000ms 内存限制: 65536KB 问题描述 对于任何偶数N大于或等于4 ,存在着至少一双素数P1和P2这样 N=P1+P2 输入描述 每行输入一个偶数,在4到215 ...
- 埃拉托色尼筛选法(Eratosthenes Sieve)分析
最近看<java核心技术>看到集合章节,在最后位集(BitSet)部分给出了一个示例程序,使用了埃拉托色尼筛选法(Eratosthenes Sieve)求自然数2~n范围的所有素数 代码如 ...
- Eratosthenes筛选法(C++版)
Sieve of Eratosthenes 使用埃拉托斯特尼筛选法计算小于100000的素数. 埃拉托斯特尼筛选法是最为知名的产生素数的筛选法,适用于产生最小的N个素数. 该方法的唯一缺点是使用的存储 ...
最新文章
- Asp.net MVC JsonResult 忽略属性
- 现代确认以约10亿美元收购波士顿动力 | AI日报
- 线程的生命周期和状态控制
- jdbc连接数据scanip_java数据库连接_jdbc
- 域用户配置文件的漫游配置
- leetcode198 打家劫舍
- redux 源码详解
- 如何在终端编译C++代码
- VS2010中的顺序图
- spring boot配置ip_Zookeeper作为配置中心使用说明
- RocketMQ 源码分析 14 事务消息02
- USB TO I2C(上海同旺电子)调试器调试LM75A--TI
- 小米10T和小米10T Pro的区别
- 路由器和网络互连实验
- java数据类型图:
- 51单片机按键消抖方式总结
- 2021Java进阶学习资料!java自学宝典pdf下载
- bzoj 3157: 国王奇遇记3516: 国王奇遇记加强版
- win10如何开放端口
- 第十三章 半监督学习
热门文章
- 【遥感数字图像处理】基础知识:第三章 遥感数字图像几何处理
- 编译C程序提示之'for' loop initial declaration used outside C99 mode
- Android之自定义属性,format详解
- [python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充
- python typeerror* wants int_python-TypeError:’int’对象是不可迭代的?
- 基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework
- python开机号_感知机(python实现)
- 100 万在中国不同地方能活多久?
- Boosting集合算法详解(一)
- 头文件定义全局变量_5.2 C++局部变量与全局变量 | 输出局部全局变量