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.
Input : N = 36 Output : 5 Numbers are 4 = 12 * 22, 9 = 12 * 32, 16 = 12 * 42, 25 = 12 * 52, 36 = 12 * 62 Input : N = 1000000 Output : 999
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:
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. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.