Given a number N, the task is to find the number which is less than or equals to N whose product of prime factors is maximum.
Note: If there is more than one number whose maximum product is equal, then print the smallest number of them.
Input: N = 12
Product of prime factor of all numbers before N:
2 = 2
3 = 3
4 = 2
5 = 5
6 = 2 * 3 = 6
7 = 7
8 = 2
9 = 3
10 = 2 * 5 = 10
11 = 11
12 = 2*3 = 6
The maximum of all the above is 11.
Input: N = 20
Approach: The idea is to use the concept of Seive of Eratosthenes to find the product of all the prime factors of N numbers and then find the minimum number whose product of prime factors is maximum. Below are the steps:
- Create a list of numbers from 1 to N and initialise every value with 1.
- Let p = 2 which is the first prime number. Iterate from p, count up in increments of p and multiply by p at each index of the list. These indexes will be p(p+1), p(p+2), p(p+3), etc.
If p is a prime number, then multiply with p at every index which is multiple of p. For p = 2, Multiply with 2 at index 2, 4, 6, 8, 10,..., till N.
- Repeat the above step for all the prime number till N.
- After finding the product of all prime factors till N, traverse the list of numbers and find the least number with maximum product.
Below is the implementation of the above approach:
Time Complexity: O(N2)
Auxiliary Space: O(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.