﻿ Java - Check if a number is Mersenne number or not

# Java: Check if a number is Mersenne number or not

## Java Numbers: Exercise-22 with Solution

Write a program to check if a number is a Mersenne number or not.

In mathematics, a Mersenne number is a number that can be written in the form M(n) = 2n − 1 for some integer n.
The first four Mersenne primes are 3, 7, 31, and 127

Test Data
Input a number: 127

Pictorial Presentation:

Sample Solution:

Java Code:

``````import java.util.Scanner;
import java.math.BigInteger;
public class Example22 {

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.print("Input a number: ");
int n = in.nextInt();
int n1 = n + 1;

int power = 0;
int ans = 0;
for(int i=0;;i++)
{
power=(int)Math.pow(2,i);
if(power>n1)
{
break;
}
else if(power==n1)
{
System.out.println(n+" is a Mersenne number.");
ans=1;
}
}
if(ans==0)
{
System.out.println(n+" is not a Mersenne number.");
}
}
}
```
```

Sample Output:

```Input a number: 127
127 is a Mersenne number.
```

Flowchart:

Java Code Editor:

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

﻿

## Java: Tips of the Day

IsPowerOfTwo

Checks if a value is positive power of two.

To understand how it works let's assume we made a call IsPowerOfTwo(4).

As value is greater than 0, so right side of the && operator will be evaluated.

The result of (~value + 1) is equal to value itself. ~100 + 001 => 011 + 001 => 100. This is equal to value.

The result of (value & value) is value. 100 & 100 => 100.

This will value the expression to true as value is equal to value.

```public static boolean isPowerOfTwo(final int value) {
return value > 0 && ((value & (~value + 1)) == value);
}
```

Ref: https://bit.ly/3sA5d4I

We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook