筛选法求素数,不断的用3,5,7,等素数作为筛子,筛除这些数的倍数,即将合数筛除。用辅助数组p记录数i是否是素数。
vector<int> prime(int n) { vector<int> p(n+1); for(int i=2;i<=n;i++) { if(i%2==0&&i>2) p[i]=0; else p[i]=1; } for(int i=3;i<=(int)(sqrt((double)n));i+=2) { if(p[i]) for(int j=i*i;j<=n;j+=i) p[j]=0; } return p; }