Skip to content
Related Articles

Related Articles

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

Improve Article
Save Article
  • Last Updated : 30 May, 2021
Improve Article
Save Article

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 = 4 
Output: 2

Input: N = 8 
Output:
 

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 = 22
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)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!