//筛选法求素数 #include "stdafx.h" #include "memory.h" int main(void ) { int n ; printf("input max num :"); scanf("%d",&n); int i,h,k=0; int nn=n/2; int *p =new int[nn]; int *a =new int [n]; for(i=0;i<nn;i++) p[i]=0; //初始化数组各元素为零 // memset(p,0,nn); memset(a,0,n); for(i=1;i<n;i++) a[i]=i+1;//将所有候选数放入筛中 for(i=0;i<n;i++) if(a[i]!=0) { p[k]=a[i];//将最小数放入素数集合p中 for(h=k;h<n;h++) if(a[h]%p[k]==0) a[h]=0;//将这个素数的倍数从筛中删去 k++; } printf("primes:/n"); /* for( i=0;i<nn;i++)//打印出所有素数 { if(p[i]!=0) printf("%5d",p[i]); }*/ i=0; while(p[i]!=0) { printf("%5d",p[i]); i++; } printf("/n"); delete[] p; delete[] a; return 0; } 多多指教