Program to check if N is a Icosihenagonal number
Given an integer N, the task is to check if it is a Icosihenagonal number or not.
Icosihenagonal number is class of figurate number. It has 21 – sided polygon called Icosihenagon. The n-th Icosihenagonal number counts the 21 number of dots and all others dots are surrounding with a common sharing corner and make a pattern. The first few Icosihenagonal numbers are 1, 21, 60, 118, 195, 291, 406…
Examples:
Input: N = 21
Output: Yes
Explanation:
Second icosihenagonal number is 21.Input: N = 30
Output: No
Approach:
1. The Kth term of the icosihenagonal number is given as
2. As we have to check whether the given number can be expressed as a icosihenagonal number or not. This can be checked as follows –
=>
=>
3. Finally, check the value of computed using this formulae is an integer, which means that N is a icosihenagonal number.
Below is the implementation of the above approach:
C++
// C++ implementation to check that // a number is icosihenagonal number or not #include <bits/stdc++.h> using namespace std; // Function to check that the // number is a icosihenagonal number bool isicosihenagonal( int N) { float n = (17 + sqrt (152 * N + 289)) / 38; // Condition to check if the // number is a icosihenagonal number return (n - ( int )n) == 0; } // Driver Code int main() { int i = 21; // Function call if (isicosihenagonal(i)) { cout << "Yes" ; } else { cout << "No" ; } return 0; } |
Java
// Java implementation to check that a // number is icosihenagonal number or not class GFG{ // Function to check that the number // is a icosihenagonal number static boolean isicosihenagonal( int N) { float n = ( float ) (( 17 + Math.sqrt( 152 * N + 289 )) / 38 ); // Condition to check if the number // is a icosihenagonal number return (n - ( int )n) == 0 ; } // Driver Code public static void main(String[] args) { int i = 21 ; // Function call if (isicosihenagonal(i)) { System.out.print( "Yes" ); } else { System.out.print( "No" ); } } } // This code is contributed by 29AjayKumar |
Python3
# Python3 implementation to check that # a number is icosihenagonal number or not import math # Function to check that the number # is a icosihenagonal number def isicosihenagonal(N): n = ( 17 + math.sqrt( 152 * N + 289 )) / 38 # Condition to check if the number # is a icosihenagonal number return (n - int (n)) = = 0 # Driver Code i = 21 # Function call if isicosihenagonal(i): print ( "Yes" ) else : print ( "No" ) # This code is contributed by divyamohan123 |
C#
// C# implementation to check that a // number is icosihenagonal number or not using System; class GFG{ // Function to check that the number // is a icosihenagonal number static bool isicosihenagonal( int N) { float n = ( float )((17 + Math.Sqrt(152 * N + 289)) / 38); // Condition to check if the number // is a icosihenagonal number return (n - ( int )n) == 0; } // Driver Code public static void Main() { int i = 21; // Function call if (isicosihenagonal(i)) { Console.Write( "Yes" ); } else { Console.Write( "No" ); } } } // This code is contributed by Code_Mech |
Javascript
<script> // JavaScript implementation to check that // a number is icosihenagonal number or not // Function to check that the // number is a icosihenagonal number function isicosihenagonal(N) { var n = (17 + Math.sqrt(152 * N + 289)) / 38; // Condition to check if the // number is a icosihenagonal number return (n - parseInt(n)) == 0; } // Driver Code var i = 21; // Function call if (isicosihenagonal(i)) { document.write( "Yes" ); } else { document.write( "No" ); } </script> |
Output:
Yes
Time Complexity: O(logN) because sqrt() function is being used
Auxiliary Space: O(1)