今天隔壁室友让我帮他写一个晒素数的程序
我就写了一个 发现再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