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

**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 <iostream>` `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.