网上很多贴Eratoshenes素数筛选法,但绝大多数都我这里的第一算法,第二个算法贴的却很少,当空间有限的时候第二个是非常不错的。 void SieveOfEratoshenes(int Prime[], int n) { for(int i=1;i<=99;i++) { if(Prime[i]!=0) { for(int j=(i+1);j<=99;j++) { if(Prime[j]!=0) { if((Prime[j]%Prime[i])==0) Prime[j]=0; } } } } } void SieveOfEratoshenes(char Prime[], int n) { int p, i; memset(Prime+2, 1, sizeof(char)*(n-2)); p = 2; while(p*p < n) { for(i = p*p; i < n; i += p) Prime[i] = 0; while(!Prime[++p]); } } void SieveOfEratoshenes(char Prime[], int n) { int i, j; memset(Prime+2, 1, sizeof(char)*(n-2)); for(i = 2; i < n; ++i) { if(Prime[i]) { for(j = i; j*i < n; ++j) Prime[i*j] = 0; } } }