素数筛选法

素数是遇到的问题经常出现的内容,判断一个数是否是素数,基本上所有人都会,但是如果是很大范围内求素数,普通的方法求容易超时,于是就可以用到可以模板,素数打表。

 

 1 //求一千万以内的素数
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cstring>
 5 using namespace std;
 6 int a[10000005];
 7 void sushu()
 8 {
 9     memset(a,0,sizeof(a));  //所有的数标记为0,0表示素数,1表示非素数
10     a[0]=1,a[1]=1;      //0,1标记为非素数
11     for(int i=2; i<=5000000; i++)
12     {
13         if(!a[i])
14             for(int j=i+i; j<=10000000; j+=i)  //每一位由素数组成的数,一定不是素数
15             {
16                 a[j]=1;
17             }
18     }
19     for(int i=1; i<=1000; i++)
20         if(!a[i])
21             printf("%d ",i);
22 }
23 int main()
24 {
25     sushu();
26 }

 

posted @ 2015-09-03 13:51  lucky_少哖  阅读(149)  评论(0编辑  收藏  举报