数论——素数筛法
来源:互联网 发布:黑暗之魂剧情分析知乎 编辑:程序博客网 时间:2024/05/29 06:47
1.基本筛法
#define N 16777220bool prime[N];void doprime1(){ int m, n, t; memset(prime, 1, sizeof(prime)); int e =(int)sqrt(float(N)); prime[0] = prime [1] = false; for(int i=4; i<=N; i+=2) prime[i]=false; for(int i=3; i<=e; i+=2) if(prime[i]) for(int j=i+i; j<=N; j+=i) prime[j]=false;}
2.埃拉托色尼筛法
#define N 16777220bool isprime[N];int prime[N], nprime;void doprime(){ nprime = 0; memset(isprime, true, sizeof(isprime)); isprime[1]=false; for(int i=2; i<N; i++) if(isprime[i]) { prime[++nprime]=i; for(int j=i*i; j<N; j+=i) isprime[j]=false; }
3.6N+1、6N-1法
只有形如6N+1或6N-1的自然数才有可能是素数
在程序上,外循环i按3的倍数递增,内循环j按照0~1的循环,则2(i+j)-1恰好就是形如6N+1或6N-1的自然数
int prime[N], k=0;bool Isprime(int x){ if(k==2) return true; if(k%2 == 0) return false; for(int i=3; i*i<=k; i+=2) if(!(k%i)) return false; return true;}void doprime(){ for(int i=1; i<=N; i+=3) for(int j=0; j<2; j++) if(Isprime(2*(i+j)-1) prime[k++]=2*(i+j)-1;}
阅读全文
0 0
- 数论——素数筛法
- 数论——素数
- poj——2689(数论之素数筛法)
- 数论知识点2——素数筛法-HDOJ 2136
- 数论——【模板】线性筛素数
- HDU5750(数论,素数筛法)
- 数论——素数算法
- 数论专题小结:素数筛法
- luogu 1865 数论 线性素数筛法
- HDU 5317(数论,素数筛法)
- 【数论】筛素数
- 数论———素数测试
- 数论概览——素数篇
- 数论常用内容——素数
- 数论常用内容——反素数
- 【数论】【素数】素数相关基础——基础操作
- 【数论】【素数】素数相关基础——整数分解
- 【数论】【素数】素数相关基础——获得素数与判别素数
- 选择排序(直接选择排序、堆排序)
- SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID
- 九度 1054
- C++动态规划之怪盗基德的滑翔翼(openjudge)
- 系统操作日志原型设计
- 数论——素数筛法
- kotlin for android 集成&&简单使用
- SQL中char、varchar、text区别
- 求LCA的几种方法
- Android动态加载Jar包并实现Native方法
- c语言常见的几种指针用法
- Shell 显示所在项目当前git分支及状态
- JavaScript 生成器函数function* () {}
- C语言sscanf函数的总结