如何批量生成大质数
起因
教授在写哈希,经常要找一些大的但是不常用的质数,教授不想背,所以打了这个。线性筛虽然时间上效率比埃氏筛高,但是相应的,空间是要比埃氏筛大的。所以选了埃氏筛。freopen是必不可少的。
#include<bits/stdc++.h>
using namespace std;
bool a[1000000001];
long long d;
void aishi(long long x)
{
a[1]=1;
for(long long i=2;i<=x;i++)
{
if(a[i]==0)
{
for(long long j=2;i*j<=x;j++)
a[i*j]=1;
}
}
}
int main()
{
freopen("aishi.txt","w",stdout);
scanf("%lld",&d);
aishi(d);
for(long long h=d;h>=1;h--)
{
if(a[h]==0)
printf("%lld\n",h);
}
}
效果
需要跑很长时间才能跑出来,但是很好用。