prime_openmp, a C++ code which counts the number of primes between 1 and N, using OpenMP to carry out the calculation in parallel.
The algorithm is completely naive. For each integer I, it simply checks whether any smaller J evenly divides it. The total amount of work for a given N is thus roughly proportional to 1/2*N^2.
This program is mainly a starting point for investigations into parallelization.
Here are the counts of the number of primes for some selected values of N:
| N | Pi(N), Number of Primes |
|---|---|
| 1 | 0 |
| 2 | 1 |
| 4 | 2 |
| 8 | 4 |
| 16 | 6 |
| 32 | 11 |
| 64 | 18 |
| 128 | 31 |
| 256 | 54 |
| 512 | 97 |
| 1024 | 172 |
| 2048 | 309 |
| 4096 | 564 |
| 8192 | 1028 |
| 16384 | 1900 |
| 32768 | 3512 |
| 65536 | 6542 |
| 131072 | 12251 |
In the BASH shell, the program could be run with 2 threads using the commands:
export OMP_NUM_THREADS=2
./prime_openmp
The information on this web page is distributed under the MIT license.
prime_openmp is available in a C version and a C++ version and a Fortran90 version.
openmp_test, a C++ code which uses the OpenMP application program interface for parallel computations in a shared memory environment.
prime, a C++ code which counts the number of primes between 1 and N, intended as a starting point for the creation of a parallel version.
prime_mpi, a C++ code which counts the number of primes between 1 and N, using MPI for parallel execution.