# Maximum possible prime divisors that can exist in numbers having exactly N divisors

Given an integer **N** which denotes the number of divisors of any number, the task is to find the maximum prime divisors that are possible in number having N divisors.

**Examples:**

Input:N = 4Output:2

Input:N = 8Output:3

**Approach:** The idea is to find the prime factorization of the number N, then the sum of the powers of the prime divisors is the maximum possible prime divisors of a number can have with N divisors.

**For Example:**

Let the number of divisors of number be 4, Then the possible numbers can be 6, 10, 15,... Divisors of 6 = 1, 2, 3, 6 Total number of prime-divisors = 2 (2, 3) Prime Factorization of 4 = 2^{2}Sum of powers of prime factors = 2

Below is the implementation of the above approach:

## C++

`// C++ implementation to find the` `// maximum possible prime divisor` `// of a number can have N divisors` `#include <iostream>` `using` `namespace` `std;` `#define ll long long int` `// Function to find the` `// maximum possible prime divisors` `// of a number can have with N divisors` `void` `findMaxPrimeDivisor(` `int` `n){` ` ` ` ` `int` `max_possible_prime = 0;` ` ` `// Number of time number` ` ` `// divided by 2` ` ` `while` `(n % 2 == 0) {` ` ` `max_possible_prime++;` ` ` `n = n / 2;` ` ` `}` ` ` `// Divide by other prime numbers` ` ` `for` `(` `int` `i = 3; i * i <= n; i = i + 2) {` ` ` `while` `(n % i == 0) {` ` ` `max_possible_prime++;` ` ` `n = n / i;` ` ` `}` ` ` `}` ` ` `// If the last number of also` ` ` `// prime then also include it` ` ` `if` `(n > 2) {` ` ` `max_possible_prime++;` ` ` `}` ` ` `cout << max_possible_prime << ` `"\n"` `;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `n = 4;` ` ` ` ` `// Function Call` ` ` `findMaxPrimeDivisor(n);` ` ` `return` `0;` `}` |

## Java

`// Java implementation to find the` `// maximum possible prime divisor` `// of a number can have N divisors` `import` `java.util.*;` `class` `GFG{` `// Function to find the` `// maximum possible prime divisors` `// of a number can have with N divisors` `static` `void` `findMaxPrimeDivisor(` `int` `n)` `{` ` ` `int` `max_possible_prime = ` `0` `;` ` ` `// Number of time number` ` ` `// divided by 2` ` ` `while` `(n % ` `2` `== ` `0` `)` ` ` `{` ` ` `max_possible_prime++;` ` ` `n = n / ` `2` `;` ` ` `}` ` ` `// Divide by other prime numbers` ` ` `for` `(` `int` `i = ` `3` `; i * i <= n; i = i + ` `2` `)` ` ` `{` ` ` `while` `(n % i == ` `0` `)` ` ` `{` ` ` `max_possible_prime++;` ` ` `n = n / i;` ` ` `}` ` ` `}` ` ` `// If the last number of also` ` ` `// prime then also include it` ` ` `if` `(n > ` `2` `)` ` ` `{` ` ` `max_possible_prime++;` ` ` `}` ` ` `System.out.print(max_possible_prime + ` `"\n"` `);` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `n = ` `4` `;` ` ` ` ` `// Function Call` ` ` `findMaxPrimeDivisor(n);` `}` `}` `// This code is contributed by amal kumar choubey` |

## Python3

`# Python3 implementation to find the` `# maximum possible prime divisor` `# of a number can have N divisors` `# Function to find the maximum` `# possible prime divisors of a` `# number can have with N divisors` `def` `findMaxPrimeDivisor(n):` ` ` ` ` `max_possible_prime ` `=` `0` ` ` ` ` `# Number of time number` ` ` `# divided by 2` ` ` `while` `(n ` `%` `2` `=` `=` `0` `):` ` ` `max_possible_prime ` `+` `=` `1` ` ` `n ` `=` `n ` `/` `/` `2` ` ` ` ` `# Divide by other prime numbers` ` ` `i ` `=` `3` ` ` `while` `(i ` `*` `i <` `=` `n):` ` ` `while` `(n ` `%` `i ` `=` `=` `0` `):` ` ` ` ` `max_possible_prime ` `+` `=` `1` ` ` `n ` `=` `n ` `/` `/` `i` ` ` `i ` `=` `i ` `+` `2` ` ` ` ` `# If the last number of also` ` ` `# prime then also include it` ` ` `if` `(n > ` `2` `):` ` ` `max_possible_prime ` `+` `=` `1` ` ` ` ` `print` `(max_possible_prime)` `# Driver Code` `n ` `=` `4` `# Function Call` `findMaxPrimeDivisor(n)` `# This code is contributed by SHUBHAMSINGH10` |

## C#

`// C# implementation to find the` `// maximum possible prime divisor` `// of a number can have N divisors` `using` `System;` `class` `GFG{` `// Function to find the` `// maximum possible prime divisors` `// of a number can have with N divisors` `static` `void` `findMaxPrimeDivisor(` `int` `n)` `{` ` ` `int` `max_possible_prime = 0;` ` ` `// Number of time number` ` ` `// divided by 2` ` ` `while` `(n % 2 == 0)` ` ` `{` ` ` `max_possible_prime++;` ` ` `n = n / 2;` ` ` `}` ` ` `// Divide by other prime numbers` ` ` `for` `(` `int` `i = 3; i * i <= n; i = i + 2)` ` ` `{` ` ` `while` `(n % i == 0)` ` ` `{` ` ` `max_possible_prime++;` ` ` `n = n / i;` ` ` `}` ` ` `}` ` ` `// If the last number of also` ` ` `// prime then also include it` ` ` `if` `(n > 2)` ` ` `{` ` ` `max_possible_prime++;` ` ` `}` ` ` `Console.Write(max_possible_prime + ` `"\n"` `);` `}` `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `n = 4;` ` ` ` ` `// Function Call` ` ` `findMaxPrimeDivisor(n);` `}` `}` `// This code is contributed by amal kumar choubey` |

## Javascript

`<script>` `// JavaScript implementation to find the` `// maximum possible prime divisor` `// of a number can have N divisors` `// Function to find the maximum` `// possible prime divisors of a` `// number can have with N divisors` `function` `findMaxPrimeDivisor(n)` `{` ` ` `let max_possible_prime = 0;` ` ` `// Number of time number` ` ` `// divided by 2` ` ` `while` `(n % 2 == 0)` ` ` `{` ` ` `max_possible_prime++;` ` ` `n = Math.floor(n / 2);` ` ` `}` ` ` `// Divide by other prime numbers` ` ` `for` `(let i = 3; i * i <= n; i = i + 2)` ` ` `{` ` ` `while` `(n % i == 0)` ` ` `{` ` ` `max_possible_prime++;` ` ` `n = Math.floor(n / i);` ` ` `}` ` ` `}` ` ` `// If the last number of also` ` ` `// prime then also include it` ` ` `if` `(n > 2)` ` ` `{` ` ` `max_possible_prime++;` ` ` `}` ` ` `document.write(max_possible_prime + ` `"\n"` `);` `}` `// Driver Code` `let n = 4;` `// Function Call` `findMaxPrimeDivisor(n);` `// This code is contributed by Surbhi Tyagi.` `</script>` |

**Output:**

2

Time Complexity: O(sqrt(N) * logN )

Auxiliary Space: O(1)