Mersenne Prime Number in C++.


Description

In mathematics, a Mersenne prime is a prime number that is one less than a power of two. That is, it is a prime number of the form Mn = 2n − 1 for some integer n.

Write a C++ program to print all Mersenne Primes smaller than an input positive integer n.

The exponents n which give Mersenne primes are 2, 3, 5, 7,... and the resulting Mersenne primes are 3, 7, 31, 127

Algorithm

1. Generate all the primes less than or equal to the given number n
2. Iterate through all numbers of the form 2n-1 and check if they are primes or not

Example

#include <iostream>
#include <algorithm>
using namespace std;
void generatePrimes(bool *primes, int n){
   fill(primes, primes + n + 1, true);
   for (int p = 2; p * p <= n; ++p) {
      if (primes[p] == true) {
         for (int i = p * 2; i <= n; i += p) {
            primes[i] = false;
         }
      }
   }
}
void mersennePrimes(int n){
   bool primes[n + 1];
   generatePrimes(primes, n);
   for (int i = 2; ((1 << i) - 1) <= n; ++i) {
      int num = (1 << i) - 1;
      if (primes[num]) {
         cout << num << " ";
      }
   }
   cout << endl;
}
int main(){
   int n = 100;
   cout << "Mersenne primes numbers till " << n << endl;
   mersennePrimes(n);
   return 0;
}

Output

When you compile and execute the above program. It generates the following output −

Mersenne primes numbers till 100
3 7 31

Updated on: 31-Oct-2019

456 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements