筛选法求素数2
来源:互联网 发布:卖肉漫画软件 编辑:程序博客网 时间:2024/05/21 02:21
一般算法
#include <iostream> using namespace std; const int MAX=100; bool isPrime[MAX+1]; int total;//计数 int prime[MAX+1]; void makePrime1() { memset(isPrime, 1, sizeof(isPrime)); isPrime[0]=false; isPrime[1]=false; for (int i=2; i<=MAX; i++) if (isPrime[i]) { prime[total++]=i; for (int k=i*i; k<=MAX; k+=i) isPrime[k]=false; } }
#include<stdio.h>#include<math.h>#define N 10000001bool prime[N];int main(){ int i, j; prime[0]=prime[1]=0,prime[2]=1; for(i=3; i<N; i++) if(i%2) prime[i]=true; else prime[i]=false; for(i=3; i<=sqrt(N); i+=2) { if(prime[i]) for(j=i+i; j<N; j+=i) prime[j]=false; } for(i=2; i<100; i++)//由于输出将占用太多io时间,所以只输出2-100内的素数。可以把100改为N if( prime [i]) printf("%d ",i); return 0;}
线性筛选法
void makePrime2() { memset(isPrime,true,sizeof(isPrime)); memset(prime,0,sizeof(prime)); for(int i=2;i<=MAX;i++) { if(isPrime[i]) prime[total++]=i; for(int j=0; j<total && i*prime[j]<=MAX; j++) { isPrime[i*prime[j]]=false; if(i%prime[j]==0) break; } } }
记录每个数的最大素因子
memset(s,0,sizeof(s));s[1]=1;for(i=2;i<MAX;i++)//筛选所有范围内的素数{if(s[i]==0)for(j=i;j<MAX;j+=i){s[j]=i;}}
0 0
- 筛选法求素数2
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数/
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- Eclipse 下 javadoc 的使用
- 1.多进程并发
- 城市平乱
- 插入排序
- 量化中继分析中matlab仿真程序
- 筛选法求素数2
- 进程与线程的区别
- 斯坦福IOS开发第五课(第二部分)
- ant的安装
- 分而治之,保持胜利果实
- Mina入门实例
- Hibernate hbm 外键关联——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列六
- Download Android kernel
- GridControl相关设置