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 = 4
Output: 2Input: N = 8
Output: 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 = 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)
Please Login to comment...