GFG App
Open App
Browser
Continue

# Program to check if N is a Hexagonal Number or not

Given a number N, check if it is Hexagonal or not. If it is then print “Yes” otherwise output “No”.

Examples:

Input: N = 6
Output: Yes
Explanation:
6 is the second hexagonal number.

Input: N = 14
Output: No
Explanation:
The second hexagonal number is 6 while the third hexagonal number is 15. Hence 14 is not a hexagonal number.

Approach: To solve the problem mentioned above we have to note that the nth hexagonal Number is given by the formula: H(n) = n * (2n – 1). The formula indicates that the n-th hexagonal number depends quadratically on n. Therefore, find the positive integral root of N = H(n) equation.

Therefore, H(n) = nth hexagonal number and N is the given Number. Hence solve the following equation:

Here, H(n) = N
=> n * (2n – 1) = N
=> 2 * n * n – n – N = 0
The positive root of this equation is:
n = (1 + sqrt(8 N + 1)) / 4

After obtaining the value for n, check if it is an integer or not where n is an integer if n – floor(n) is 0.

Below is the implementation of the above approach:

## C++

 `// C++ Program to check` `// if N is a Hexagonal Number`   `#include ` `using` `namespace` `std;`   `// Function to check` `// if number is hexagonal` `bool` `isHexagonal(``int` `N)` `{` `    ``float` `val = 8 * N + 1;`   `    ``float` `x = 1 + ``sqrt``(val);`   `    ``// Calculate the value for n` `    ``float` `n = (x) / 4;`   `    ``// Check if n - floor(n)` `    ``// is equal to 0` `    ``if` `((n - (``int``)n) == 0)` `        ``return` `true``;`   `    ``else` `        ``return` `false``;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `N = 14;`   `    ``if` `(isHexagonal(N) == ``true``)` `        ``cout << ``"Yes"` `<< endl;`   `    ``else` `        ``cout << ``"No"` `<< endl;`   `    ``return` `0;` `}`

## Java

 `// Java program to check` `// if N is a hexagonal number` `import` `java.util.*;`   `class` `GFG {`   `// Function to check` `// if number is hexagonal` `static` `boolean` `isHexagonal(``int` `N)` `{` `    ``float` `val = ``8` `* N + ``1``;`   `    ``float` `x = ``1` `+ (``float``)Math.sqrt(val);`   `    ``// Calculate the value for n` `    ``float` `n = (x) / ``4``;`   `    ``// Check if n - floor(n)` `    ``// is equal to 0` `    ``if` `((n - (``int``)n) == ``0``)` `        ``return` `true``;`   `    ``else` `        ``return` `false``;` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `N = ``14``;`   `    ``if` `(isHexagonal(N) == ``true``)` `        ``System.out.println(``"Yes"``);` `    ``else` `        ``System.out.println(``"No"``);` `}` `}`   `// This code is contributed by offbeat`

## Python3

 `# Python3 program to check` `# if N is a hexagonal number` `from` `math ``import` `sqrt`   `# Function to check` `# if number is hexagonal` `def` `isHexagonal(N):` `    `  `    ``val ``=` `8` `*` `N ``+` `1` `    ``x ``=` `1` `+` `sqrt(val)`   `    ``# Calculate the value for n` `    ``n ``=` `x ``/` `4`   `    ``# Check if n - floor(n)` `    ``# is equal to 0` `    ``if` `((n ``-` `int``(n)) ``=``=` `0``):` `        ``return` `True` `    ``else``:` `        ``return` `False`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``N ``=` `14` `    `  `    ``if` `(isHexagonal(N) ``=``=` `True``):` `        ``print``(``"Yes"``)` `    ``else``:` `        ``print``(``"No"``)`   `# This code is contributed by BhupendraSingh`

## C#

 `// C# program to check if ` `// N is a hexagonal number` `using` `System;`   `class` `GFG{`   `// Function to check` `// if number is hexagonal` `static` `bool` `isHexagonal(``int` `N)` `{` `    ``float` `val = 8 * N + 1;` `    ``float` `x = 1 + (``float``)Math.Sqrt(val);`   `    ``// Calculate the value for n` `    ``float` `n = (x) / 4;`   `    ``// Check if n - floor(n)` `    ``// is equal to 0` `    ``if` `((n - (``int``)n) == 0)` `    ``{` `        ``return` `true``;` `    ``}` `    ``else` `    ``{` `        ``return` `false``;` `    ``}` `}`   `// Driver code` `public` `static` `void` `Main(``string``[] args)` `{` `    ``int` `N = 14;`   `    ``if` `(isHexagonal(N) == ``true``)` `        ``Console.Write(``"Yes"``);` `    ``else` `        ``Console.Write(``"No"``);` `}` `}`   `// This code is contributed by rutvik_56`

## Javascript

 ``

Output:

`No`

Time Complexity: O(log(N)), for calculation square root.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up