There is a basic way to judge whether a number is a prime:
int isprime(int x) { int i; float fx,sqrtx; if(x<=1) return 0; else if(x==2) return 1; else { if(x%2==0) return 0; else { fx=x; sqrtx=sqrt(fx); for(i=3;i<=sqrtx;i+=2) if( x%i==0 ) return 0; return 1; } } }
sieve of Eratosthenes:
void getPrime() {//筛法 int i,j; int bound=sqrt((double)n); for(i=2;i<n;i++)prime[i]=1;//将所有的数置1,表示这些数都是素数. for(i=2;i<bound;i++) {//注意从2开始 for(j=i+i;j<n;j+=i)//将2的倍数置成0,表示不是素数 prime[j]=0; } }