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

• Last Updated : 11 Nov, 2021

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 ``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

 ``

Output:

`1, 40755,`

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

My Personal Notes arrow_drop_up