总结:特别要注意第二重循环的j在int的情况下会爆掉
#include<iostream>
using namespace std;
#define maxn 1000000
int a[maxn/10];
int flag[maxn];
int main()
{
freopen("f.out","w",stdout);
memset(a,0,sizeof(a));
memset(flag,0,sizeof(flag));
int k=0;
for(int i=2;i<maxn;i++)//maxn
{
if(!flag[i])
{
a[k++]=i;
for(__int64 j=(__int64)i*i;j<maxn;j+=i)//__int64 please take your attention!
{
flag[j]=1;
}
}
}
for(int i=0;i<k;i++)
{
printf("%d,",a[i]);
}
//system("pause");
return 0;}