首页 > 代码库 > 2的29次方范围内的素数

2的29次方范围内的素数

今天隔壁室友让我帮他写一个晒素数的程序

我就写了一个  发现再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();
}

 

2的29次方范围内的素数