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++
#include <bits/stdc++.h>
using namespace std;
bool isHexagonal( int N)
{
float val = 8 * N + 1;
float x = 1 + sqrt (val);
float n = (x) / 4;
if ((n - ( int )n) == 0)
return true ;
else
return false ;
}
int main()
{
int N = 14;
if (isHexagonal(N) == true )
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
|
Java
import java.util.*;
class GFG {
static boolean isHexagonal( int N)
{
float val = 8 * N + 1 ;
float x = 1 + ( float )Math.sqrt(val);
float n = (x) / 4 ;
if ((n - ( int )n) == 0 )
return true ;
else
return false ;
}
public static void main(String[] args)
{
int N = 14 ;
if (isHexagonal(N) == true )
System.out.println( "Yes" );
else
System.out.println( "No" );
}
}
|
Python3
from math import sqrt
def isHexagonal(N):
val = 8 * N + 1
x = 1 + sqrt(val)
n = x / 4
if ((n - int (n)) = = 0 ):
return True
else :
return False
if __name__ = = '__main__' :
N = 14
if (isHexagonal(N) = = True ):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
class GFG{
static bool isHexagonal( int N)
{
float val = 8 * N + 1;
float x = 1 + ( float )Math.Sqrt(val);
float n = (x) / 4;
if ((n - ( int )n) == 0)
{
return true ;
}
else
{
return false ;
}
}
public static void Main( string [] args)
{
int N = 14;
if (isHexagonal(N) == true )
Console.Write( "Yes" );
else
Console.Write( "No" );
}
}
|
Javascript
<script>
function isHexagonal(N)
{
let val = 8 * N + 1;
let x = 1 + Math.sqrt(val);
let n = (x) / 4;
if ((n - parseInt(n)) == 0)
{
return true ;
}
else
{
return false ;
}
}
let N = 14;
if (isHexagonal(N) == true )
{
document.write( "Yes" + "</br>" );
}
else
{
document.write( "No" );
}
</script>
|
Time Complexity: O(log(N)), for calculation square root.
Auxiliary Space: O(1)