1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | const int PSIZE = 150000; int primes[PSIZE]; int sz = 0; bool isPrime4( int x ) { if(x < 2) return true; int limit = (int) sqrt(x); primes[sz] = limit+1; for(int *p = primes; *p <= limit; p++) { if( x % *p == 0 ) { return false; } } assert(sz < PSIZE); primes[sz++] = x; return true; } |
Other entries:
- isPrime: Naive version
- isPrime, Optimization 1: Iterate only until the square root of the number
- isPrime, Optimization 2: Only divide by odd numbers, until the square root of the number
- isPrime, Optimization 3: Skip the divisors that are multiple of 2 or 3
- Keep the previosly generated primes and use them to test the following numbers.
- isPrime, Recursive.
No comments:
Post a Comment