素数筛法
来源:互联网 发布:软件无线电系统架构 编辑:程序博客网 时间:2024/04/28 20:39
//素数筛法1//非线性#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define MAXN 1000int main(){bool array[MAXN+1];memset(array,true,sizeof(array));array[0]=array[1]=false;for(int i=2;i<=MAXN/2;i++){if(array[i]){for(int j=i+i;j<=MAXN;j+=i){array[j]=false;}}}for(int i=1;i<=MAXN;i++)if(array[i])cout<<i<<'\n';return 0;}
//素数筛法2//线性 每个素数只被删除一次//原理://合理安排删除顺序,使每一个合数只被删除一次//由任何一个合数均能分解为质数的连乘积//例如:16=2^4,9=2*3,12=2^2*3,18=2*9(3^2,此时还未删去,但终究会删去)//把因式分解中最小质数写在最左边,即k=p^m*q (1:p=q,当写成k=p^m,m>=2;2:q是比p大且没有被删过的数)//每个合数写成这种分解是唯一的#include <cstdio>#include <cstring>#include <cmath>#include <iostream>using namespace std;#define MAXN 100int main(){int p,q,k;bool array[MAXN+1];memset(array,true,sizeof(array));array[0]=array[1]=false;for(p=2;p<=sqrt(MAXN);p++){if(array[p]){for(q=p;p*q<=MAXN;q++){if(array[q]){//q的条件很重要,防止重复删除(具体推导可见本子)for(k=p*q;k<=MAXN;k*=p)array[k]=false;}}}}for(int i=1;i<=MAXN;i++)if(array[i])cout<<i<<'\n';return 0;}
//素数筛法3//线性//思想://把合数用它最小的质因子删掉,每个合数被唯一的筛一次//array[0]处的值代表范围内素数个数//且array[1]开始的 array[0]个 数为这些素数#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define MAXN 1000int main(){int array[MAXN+1];memset(array,0,sizeof(array));for(int i=2;i<=MAXN;i++){if(!array[i]) array[++array[0]]=i;for(int j=1;j<=array[0]&&array[j]*i<=MAXN;j++){array[array[j]*i]=1;if(i%array[j]==0)//防止重复删除 推导见本子break;}}cout<<array[0]<<"\n\n";for(int i=1;i<=array[0];i++)cout<<array[i]<<'\n';return 0;}
//素数筛法4//非线性//筛完后array[i]为i的最大素因子#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define MAXN 1000int main(){int array[MAXN+1];memset(array,0,sizeof(array));array[0]=array[1]=1;for(int i=2;i<=MAXN;i++){if(!array[i]){ for(int j=i;j<=MAXN;j+=i) array[j]=i; }}for(int i=2;i<=MAXN;i++)cout<<i<<":"<<array[i]<<'\n';return 0;}
1 0
- 又见素数(素数筛法)
- nyoj 26 孪生素数 素数筛法
- HDU 4548 美素数 // 素数筛法
- 素数判断和素数筛法
- 素数筛法-----》大规模的判断素数
- 素数筛(筛选法求素数)
- 素数筛选法(素数筛)
- 森德拉姆素数筛法
- 素数筛法
- 素数筛法
- 筛法素数表
- 筛素数法
- POJ2262 素数筛法
- POJ3306 素数筛法
- 素数筛法
- 素数筛法
- 素数筛法
- 【数学】素数筛法
- 软件工程(C编码实践篇)总结
- Android DialogFragment引发的常见问题处理
- 我的ROS学习之路—创建catkin包
- cf 734 div2 A,B,C
- 《未解决的问题》
- 素数筛法
- javascript入门基础篇重点 第十六节----正则表达式
- No resource found that matches the given name 'android:TextAppearance.Material...'解决办法
- sources备份
- uva 10305 拓扑排序
- 我的ROS学习之路—ros相关命令
- 方维P2P短信接口修改
- 扩展欧几里德算法详解
- svn服务器备份与恢复