//生成素数数组
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int CompositeNumFilterV3(int);
int m,c;
cin>>m;
cout<<"int a[]={";
c=CompositeNumFilterV3(m);
return 0;
}//求素数的程序
int CompositeNumFilterV3(int n)
{
int i, j;
int count = 0;
char* flag = (char*)malloc(n+1);
int mpLen = 2*3*5*7*11*13;
char magicPattern[2*3*5*7*11*13];
for (i=0; i<mpLen; i++)
{
magicPattern[i++] = 1;
magicPattern[i++] = 0;
magicPattern[i++] = 0;
magicPattern[i++] = 0;
magicPattern[i++] = 1;
magicPattern[i] = 0;
}
for (i=4; i<=mpLen; i+=5)
magicPattern[i] = 0;
for (i=6; i<=mpLen; i+=7)
magicPattern[i] = 0;
for (i=10; i<=mpLen; i+=11)
magicPattern[i] = 0;
for (i=12; i<=mpLen; i+=13)
magicPattern[i] = 0;
int remainder = n%mpLen;
char* p = flag+1;
char* pstop = p+n-remainder;
while (p < pstop){
memcpy(p, magicPattern, mpLen);
p += mpLen;
}
if (remainder > 0)
memcpy(p, magicPattern, remainder);
flag[2] = 1;
flag[3] = 1;
flag[5] = 1;
flag[7] = 1;
flag[11] = 1;
flag[13] = 1;
int stop = n/13;
for (i=17; i <= stop; i++)
{
if (0 == flag[i])
continue;
int step = i*2;
for (j=i*17; j <= n; j+=step)
flag[j] = 0;
}
int tt=0;
for (i=2; i<=n; i++)
{
if (flag[i])
if(!tt){
printf("%d",i);tt++;
}
else printf(",%d",i);
}
cout<<"};";
free(flag);
return count;
}