# Count number less than N which are product of perfect squares

Given an Integer N. The task is count numbers P less than N such that P is a product of two distinct perfect squares.

Examples:

```Input : N = 36
Output : 5
Numbers are 4 = 12 * 22,
9 = 12 * 32,
16 = 12 * 42,
25 = 12 * 52,
36 = 12 * 62Input : N = 1000000
Output : 999
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Let us consider a number P = (a2 * b2) such that P <= N. So we have (a2 * b2) <= N. This can be written as (a * b) <= sqrt(N).

So we have to count pairs (a, b) such that (a * b) <= sqrt(N) and a <= b.
Let us take a number Q = (a * b) such that Q <= sqrt(N).

Taking a = 1, we have b = sqrt(N) – 1 numbers such that, ( a * b = Q <= sqrt(N)).

Thus we can have all sqrt(N) – 1 numbers such that (a2 * b2) <= N.

Below is the implementation of the above approach:

 `// C++ program to count number less ` `// than N which are product of ` `// any two perfect squares ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Function to count number less ` `// than N which are product of ` `// any two perfect squares ` `int` `countNumbers(``int` `N) ` `{ ` `    ``return` `int``(``sqrt``(N)) - 1; ` `} ` ` `  `// Driver program ` `int` `main() ` `{ ` `    ``int` `N = 36; ` ` `  `    ``cout << countNumbers(N); ` ` `  `    ``return` `0; ` `} `

 `// Java program to count number less ` `// than N which are product of ` `// any two perfect squares ` `import` `java.util.*; ` ` `  ` `  `class` `solution ` `{ ` ` `  `// Function to count number less ` `// than N which are product of ` `// any two perfect squares ` `static` `int` `countNumbers(``int` `N) ` `{ ` `    ``return` `(``int``)Math.sqrt(N) - ``1``; ` `} ` ` `  `// Driver program ` `public` `static` `void` `main(String args[]) ` `{ ` `    ``int` `N = ``36``; ` ` `  `    ``System.out.println(countNumbers(N)); ` `     `  `} ` ` `  `} ` ` `  `//This code is contributed by ` `// Surendra_Gangwar `

 `# Python 3 program to count number  ` `# less than N which are product of ` `# any two perfect squares ` `import` `math ` ` `  `# Function to count number less ` `# than N which are product of ` `# any two perfect squares ` `def` `countNumbers(N): ` `    ``return` `int``(math.sqrt(N)) ``-` `1` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``N ``=` `36` ` `  `    ``print``(countNumbers(N)) ` ` `  `# This code is contributed ` `# by ChitraNayal `

 `// C# program to count number less ` `// than N which are product of ` `// any two perfect squares ` `using` `System; ` ` `  `class` `GFG ` `{ ` `// Function to count number less ` `// than N which are product of ` `// any two perfect squares ` `static` `int` `countNumbers(``int` `N) ` `{ ` `    ``return` `(``int``)(Math.Sqrt(N)) - 1; ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main() ` `{ ` `    ``int` `N = 36; ` ` `  `    ``Console.Write(countNumbers(N)); ` `} ` `} ` ` `  `// This code is contributed  ` `// by Akanksha Rai `

 ` `

Output:
```5
```

Time Complexity: O(log(N))

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

Article Tags :