Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Find all numbers up to N which are both Pentagonal and Hexagonal

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an integer N, the task is to find all numbers up to N, which are both Pentagonal as well as Hexagonal.
Example: 
 

Input: N = 1000 
Output: 1
Input: N = 100000 
Output: 1, 40755 
 

 

Approach: 
 

  • To solve the problem, we are generating all pentagonal numbers up to N and check if those are hexagonal numbers or not.
  • Formula to calculate ith Pentagonal Number
     

i * ( 3 * i – 1 ) / 2

  • To check if a pentagonal number, say pn, is a hexagonal number or not: 
     

( 1 + sqrt(8 * pn + 1 ) ) / 4 needs to be a Natural number

Below is the implementation of the above approach: 
 

C++




// C++ Program of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print numbers upto N
// which are both pentagonal as well
// as hexagonal numbers
void pen_hex(long long n)
{
    long long pn = 1;
    for (long long int i = 1;; i++) {
 
        // Calculate i-th pentagonal number
        pn = i * (3 * i - 1) / 2;
 
        if (pn > n)
            break;
 
        // Check if the pentagonal number
        // pn is hexagonal or not
        long double seqNum
            = (1 + sqrt(8 * pn + 1)) / 4;
 
        if (seqNum == long(seqNum))
            cout << pn << ", ";
    }
}
 
// Driver Program
int main()
{
    long long int N = 1000000;
    pen_hex(N);
    return 0;
}

Java




// Java program of the above approach
import java.util.*;
 
class GFG{
 
// Function to print numbers upto N
// which are both pentagonal as well
// as hexagonal numbers
static void pen_hex(long n)
{
    long pn = 1;
    for(long i = 1; i < n; i++)
    {
         
        // Calculate i-th pentagonal number
        pn = i * (3 * i - 1) / 2;
 
        if (pn > n)
            break;
 
        // Check if the pentagonal number
        // pn is hexagonal or not
        double seqNum = (1 + Math.sqrt(
                        8 * pn + 1)) / 4;
 
        if (seqNum == (long)seqNum)
            System.out.print(pn + ", ");
    }
}
 
// Driver code
public static void main(String[] args)
{
    long N = 1000000;
    pen_hex(N);
}
}
 
// This code is contributed by offbeat

Python3




# Python3 program of the above approach
import math
 
# Function to print numbers upto N
# which are both pentagonal as well
# as hexagonal numbers
def pen_hex(n):
 
    pn = 1
    for i in range(1, N):
 
        # Calculate i-th pentagonal number
        pn = (int)(i * (3 * i - 1) / 2)
 
        if (pn > n):
            break
 
        # Check if the pentagonal number
        # pn is hexagonal or not
        seqNum = (1 + math.sqrt(8 * pn + 1)) / 4
 
        if (seqNum == (int)(seqNum)):
            print(pn, end = ", ")
 
# Driver Code
N = 1000000
 
pen_hex(N)
 
# This code is contributed by divyeshrabadiya07

C#




// C# program of the above approach 
using System;
using System.Collections.Generic;
 
class GFG{        
             
// Function to print numbers upto N
// which are both pentagonal as well
// as hexagonal numbers
static void pen_hex(long n)
{
    long pn = 1;
    for(long i = 1;; i++)
    {
         
        // Calculate i-th pentagonal number
        pn = i * (3 * i - 1) / 2;
 
        if (pn > n)
            break;
 
        // Check if the pentagonal number
        // pn is hexagonal or not
        double seqNum = (1 + Math.Sqrt(
                         8 * pn + 1)) / 4;
 
        if (seqNum == (long)(seqNum))
        {
            Console.Write(pn + ", ");
        }
    }
}
         
// Driver Code        
public static void Main (string[] args)
{        
    long N = 1000000;
     
    pen_hex(N);
}        
}
 
// This code is contributed by rutvik_56

Javascript




<script>
// javascript program of the above approach
  
// Function to print numbers upto N
// which are both pentagonal as well
// as hexagonal numbers
function pen_hex(n)
{
    var pn = 1;
    for(i = 1; i < n; i++)
    {
         
        // Calculate i-th pentagonal number
        pn = parseInt(i * (3 * i - 1) / 2);
 
        if (pn > n)
            break;
 
        // Check if the pentagonal number
        // pn is hexagonal or not
        var seqNum = (1 + Math.sqrt(
                        8 * pn + 1)) / 4;
 
        if (seqNum == parseInt(seqNum))
            document.write(pn + ", ");
    }
}
 
// Driver code
var N = 1000000;
pen_hex(N);
 
// This code is contributed by Amit Katiyar
</script>

Output: 

1, 40755,

 

Time Complexity: O(N) 
Auxiliary space: O(1)
 


My Personal Notes arrow_drop_up
Last Updated : 11 Nov, 2021
Like Article
Save Article
Similar Reads
Related Tutorials