Related Articles
Sum of all mersenne numbers present in an array
• Difficulty Level : Expert
• Last Updated : 13 Jun, 2019

Given an array of integers arr[], the task is to find the sum of all the Mersenne numbers from the array. A number is a Mersenne number if it is greater than 0 and is one less than some power of 2. First few Mersenne numbers are 1, 3, 7, 15, 31, 63, 127, …

Examples:

Input: arr[] = {17, 6, 7, 63, 3}
Output: 73
Only 7, 63 and 3 are Mersenne numbers i.e. 7 + 63 + 3 = 73

Input: arr[] = {1, 3, 11, 45}
Output: 4

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Initialise sum = 0 and start traversing all the elements of the array, if current element is one less than some power of 2 and is greater than 0 then update sum = sum + arr[i]. Print the sum in the end.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;`` ` `// Function that returns true``// if n is a Mersenne number``int` `isMersenne(``int` `n)``{``    ``while` `(n != 0) ``    ``{``        ``int` `r = n % 2;``        ``if` `(r == 0)``            ``return` `false``;``        ``n /= 2;``    ``}``    ``return` `true``;``}`` ` `// Function to return the sum of all the``// Mersenne numbers from the given array``int` `sumOfMersenne(``int` `arr[], ``int` `n)``{`` ` `    ``// To store the required sum``    ``int` `sum = 0;``    ``for` `(``int` `i = 0; i < n; i++)``    ``{`` ` `        ``// If current element is a Mersenne number``        ``if` `(arr[i] > 0 && isMersenne(arr[i])) ``        ``{``            ``sum += arr[i];``        ``}``    ``}``    ``return` `sum;``}`` ` `// Driver code``int` `main()``{``    ``int` `arr[] = { 17, 6, 7, 63, 3 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(``int``);``    ``cout << (sumOfMersenne(arr, n));``    ``return` `0;``}`` ` `// This code is contributed by jit_t`

## Java

 `// Java implementation of the approach``class` `GFG {`` ` `    ``// Function that returns true``    ``// if n is a Mersenne number``    ``static` `boolean` `isMersenne(``int` `n)``    ``{``        ``while` `(n != ``0``) {``            ``int` `r = n % ``2``;``            ``if` `(r == ``0``)``                ``return` `false``;``            ``n /= ``2``;``        ``}``        ``return` `true``;``    ``}`` ` `    ``// Function to return the sum of all the``    ``// Mersenne numbers from the given array``    ``static` `int` `sumOfMersenne(``int``[] arr, ``int` `n)``    ``{`` ` `        ``// To store the required sum``        ``int` `sum = ``0``;``        ``for` `(``int` `i = ``0``; i < n; i++) {`` ` `            ``// If current element is a Mersenne number``            ``if` `(arr[i] > ``0` `&& isMersenne(arr[i])) {``                ``sum += arr[i];``            ``}``        ``}``        ``return` `sum;``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int``[] arr = { ``17``, ``6``, ``7``, ``63``, ``3` `};``        ``int` `n = arr.length;``        ``System.out.print(sumOfMersenne(arr, n));``    ``}``}`

## Python3

 `# Python3 implementation of the approach `` ` `# Function that returns true ``# if n is a Mersenne number ``def` `isMersenne(n) : ``    ``while` `(n !``=` `0``) :``        ``r ``=` `n ``%` `2``;``        ``if` `(r ``=``=` `0``) :``            ``return` `False``; ``        ``n ``/``/``=` `2``; ``         ` `    ``return` `True``; `` ` `# Function to return the sum of all the ``# Mersenne numbers from the given array ``def` `sumOfMersenne(arr, n) : ``    ``# To store the required sum ``    ``sum` `=` `0``; ``    ``for` `i ``in` `range``(n) :`` ` `        ``# If current element is a Mersenne number ``        ``if` `(arr[i] > ``0` `and` `isMersenne(arr[i])) :``            ``sum` `+``=` `arr[i]; ``     ` `    ``return` `sum``; `` ` ` ` `# Driver code ``if` `__name__ ``=``=` `"__main__"` `: `` ` `    ``arr ``=` `[``17``, ``6``, ``7``, ``63``, ``3` `];``    ``n ``=` `len``(arr); ``    ``print``(sumOfMersenne(arr, n)); ``     ` `# This code is contributed by AnkitRai01`

## C#

 `//C# implementation of the approach``using` `System;`` ` `class` `GFG``{``    ``// Function that returns true``    ``// if n is a Mersenne number``    ``static` `bool` `isMersenne(``int` `n)``    ``{``        ``while` `(n != 0) ``        ``{``            ``int` `r = n % 2;``            ``if` `(r == 0)``                ``return` `false``;``            ``n /= 2;``        ``}``        ``return` `true``;``    ``}`` ` `    ``// Function to return the sum of all the``    ``// Mersenne numbers from the given array``    ``static` `int` `sumOfMersenne(``int``[] arr, ``int` `n)``    ``{`` ` `        ``// To store the required sum``        ``int` `sum = 0;``        ``for` `(``int` `i = 0; i < n; i++) ``        ``{`` ` `            ``// If current element is a Mersenne number``            ``if` `(arr[i] > 0 && isMersenne(arr[i]))``            ``{``                ``sum += arr[i];``            ``}``        ``}``        ``return` `sum;``    ``}`` ` `    ``// Driver code``    ``static` `public` `void` `Main ()``    ``{``        ``int``[] arr = { 17, 6, 7, 63, 3 };``        ``int` `n = arr.Length;``        ``Console.WriteLine(sumOfMersenne(arr, n));``    ``}``}`` ` `// This code is contributed by jit_t`
Output:
```73
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up