素数筛(埃式筛法/欧拉筛法)
2017-11-13 23:52
225 查看
素数是只能整除它自己和1的整数。
遍历2以上N的平方根以下的每一个整数,是不是能整除N
遍历2以上N的平方根以下的每一个素数,是不是能整除N;(这个方法是上面方法的改进,但要求N平方根以下的素数已全部知道)
筛选法:找出小于等于n的开方的素数,然后将n内所有这些素数的倍数统统去掉,剩下的数就都是素数。即”埃拉托斯特尼筛法”。
4.线性素数筛(欧拉素数筛):每一个合数都可以进行质因数分解,所以任何一个合数都可以由最小素因子进行唯一标记。线性筛中一个数字只被它最小的素因子筛掉,减少了重复删除造成的时间复杂度。
注:线性素数筛的代码转自http://blog.csdn.net/sdnulixianrui/article/details/79559048
遍历2以上N的平方根以下的每一个整数,是不是能整除N
遍历2以上N的平方根以下的每一个素数,是不是能整除N;(这个方法是上面方法的改进,但要求N平方根以下的素数已全部知道)
筛选法:找出小于等于n的开方的素数,然后将n内所有这些素数的倍数统统去掉,剩下的数就都是素数。即”埃拉托斯特尼筛法”。
#include<cstdio> #include<iostream> #include <cmath> #include<string> #include<set> #include<iterator> #include<cstring> #define N 10001 using namespace std; bool prime[101]; int main() { int i,j; memset(prime,1,sizeof(prime)); prime[0]=prime[1]=0; //先挖掉a[1] for(i=2; i*i<=100; i++){ //无需找1~n,只需找1~除数为根n if(prime[i]){ for(j=2*i; j<101; j+=i){ prime[j]=0; } } } for(i=2;i<101;i++){ if(prime[i]){ printf("%d ", i); } } return 0; }
4.线性素数筛(欧拉素数筛):每一个合数都可以进行质因数分解,所以任何一个合数都可以由最小素因子进行唯一标记。线性筛中一个数字只被它最小的素因子筛掉,减少了重复删除造成的时间复杂度。
#include<bits/stdc++.h> using namespace std; #include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f;//无穷大 #define PI acos(-1) const int numsize = 10010; bool isprime[numsize]; int prime[numsize]; void sieve(){ memset(isprime, 1, sizeof(isprime)); isprime[1] = 0; int cnt = 1; for(int i = 2; i <= numsize; i++){ if(isprime[i]){ prime[cnt++] = i; } for(int j = 1; j < cnt && prime[j] * i <= numsize; j++){ isprime[i * prime[j]] = 0; if(i % prime[j] == 0)//若prime[j]是最小素因子,就跳出循环 break; } } } int main(){ return 0; }
注:线性素数筛的代码转自http://blog.csdn.net/sdnulixianrui/article/details/79559048
相关文章推荐
- poj2262 Goldbach's Conjecture 素数的欧拉筛法
- POJ Goldbach's Conjecture(素数筛~欧拉筛法)
- 快速求素数表——埃氏筛法与欧拉筛法
- poj3006 Dirichlet's Theorem on Arithmetic Progressions 欧拉筛法素数打表,杂题
- 筛素数-欧拉筛法模板
- 欧拉筛法求素数
- 埃式筛法——快速筛选n以内的素数
- 埃式筛法(素数筛) + 区间素数筛 + 应用
- 欧拉线性筛法求素数 学习报告
- (大素数2.1.2.1)UVA 10871 Primed Subsequence(欧拉筛法)
- 线性筛法(欧拉筛法)求素数
- 快速求素数表——埃氏筛法与欧拉筛法
- 线性筛法(欧拉筛法)求素数
- 【 数学基础】【素数线性筛法--欧拉筛法模板】【普通筛法的优化】
- 素数筛总结篇___Eratosthenes筛法和欧拉筛法(*【模板】使用 )
- 使用欧拉筛法求素数和
- 小于等于n的素数的个数(埃式筛选法和欧拉筛选)
- 埃拉托斯特尼筛法 VS 欧拉筛法 (素数筛选) Java
- 埃式筛法计算素数Python3(学了一阵儿了,第一次写.)
- (Relax 数论1.11)POJ 1595 Prime Cuts(欧拉筛法: 输出1~n区间中中间的2C个素数)