今天隔壁室友让我帮他写一个晒素数的程序
我就写了一个 发现再int范围内的素数筛不出来,,,,
电脑只能跑到 2的29;
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <iostream>
#include <time.h>
using namespace std;
typedef long long ll;
bool is_prime[1<<30];
int prime[1<<28];
int cnt;
void cost_time()
{
cout<<"调用该程序所花费的时间为:"<<clock()/CLOCKS_PER_SEC<<"秒\n";
cout<<"调用该程序所花费的时间为:"<<clock()<<"毫秒\n";
}
void init(){
cnt = 0;
for(int i=0;i<(1<<29);i++)
is_prime[i]=1;
is_prime[0]=is_prime[1]=0;
for(int i=2;i<(1<<29);i++){
if(is_prime[i])
{
prime[cnt++]=i;
for(int j=i*2;j<(1<<29);j+=i)
is_prime[j]=0;
}
}
}
int main(){
freopen("prime.txt","w",stdout);
init();
printf("%d\n",cnt);
for(int i=0;i<cnt;i++)
{
printf("%d ",prime[i]);
if(i%6==0)
printf("\n");
}
cost_time();
}
原文:http://blog.csdn.net/u013076044/article/details/41629957