本程序旨在求很大范围内的质数
#include <stdio.h>
#define N 10000000
//f[i]表示数字i是否为合数,值为FALSE表示i为质数
bool f[N+1];
int main(){
f[0] = f[1] = true;
//根据每个合数都可以写成一个质数与另一个数的乘积
for(int i=2;i<=N;i++){
if(!f[i]){
for(int j=i*2;j<=N;j+=i)
f[j] = true;
}
}
//统计在1到N之间有多少个质数
int ans = 0;
for(int i=1;i<=N;i++)
if(!f[i]) ans++;
printf("%d",ans);
return 0;
}