算法如下:
#include<stdio.h> #include<math.h> void Sieve(int n) { int p,j,i; int A[n+1],L[n+1]; for(p=2;p<=n;p++) A[p]=p; for(p=2;p<=sqrt(n);p++) { if(A[p]!=0) { j=p*p; while(j<n) { A[j]=0; j=j+p; } } } i=0; for(p=2;p<=n;p++) { if(A[p]!=0) { L[i]=A[p]; i++; } } for(p=0;p<i;p++) printf("%d ",L[p]); printf("\n"); } void main() { Sieve(25); }