Related Articles

Related Articles

Count of distinct power of prime factor of N
  • Last Updated : 17 Aug, 2020

Given a positive integer N, the task is to find the total number of distinct power of prime factor of the given number N.

Examples:

Input: N = 216
Output: 4
Explanation:
216 can be expressed as  2 * 2 * 3 * 32.
The factors satisfying the conditions are 2,  22,  3 and 32 as all of them are written as distinct positive powers of prime factors.

Input: N = 24
Output: 3
Explanation:
24 can be expressed as 2 * 22 * 3

Approach: The idea is to find all the prime factors of N and how many times each prime factor divides N.
Suppose the prime factor ‘p’ divides N ‘z’ times, then the required distinct prime factors are p, p2, …, pi.
To find the number of distinct primes factor for prime number p find the minimum value of i such that (1 + 2 + …. + i) ≤ z.



Therefore, for each prime number dividing N K number of times, find the minimum value of i such that (1 + 2 + …. + i) ≤ K.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to count the number
// of distinct positive power of
// prime factor of integer N
int countFac(int n)
{
    int m = n;
    int count = 0;
  
    // Iterate for all prime factor
    for (int i = 2; (i * i) <= m; ++i) {
  
        int total = 0;
  
        // If it is a prime factor,
        // count the total number
        // of times it divides n.
        while (n % i == 0) {
            n /= i;
            ++total;
        }
  
        int temp = 0;
  
        // Find the Number of distinct
        // possible positive numbers
        for (int j = 1;
             (temp + j) <= total;
             ++j) {
            temp += j;
            ++count;
        }
    }
    if (n != 1)
        ++count;
  
    // Return the final count
    return count;
}
  
// Driver Code
int main()
{
    // Given Number N
    int N = 24;
  
    // Function Call
    cout << countFac(N);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for the above approach 
import java.util.*; 
  
class GFG{ 
  
// Function to count the number
// of distinct positive power of
// prime factor of integer N
static int countFac(int n)
{
    int m = n;
    int count = 0;
  
    // Iterate for all prime factor
    for(int i = 2; (i * i) <= m; ++i)
    {
       int total = 0;
         
       // If it is a prime factor,
       // count the total number
       // of times it divides n.
       while (n % i == 0)
       {
           n /= i;
           ++total;
       }
       int temp = 0;
         
       // Find the Number of distinct
       // possible positive numbers
       for(int j = 1; (temp + j) <= total; ++j)
       {
          temp += j;
          ++count;
       }
    }
    if (n != 1)
        ++count;
          
    // Return the final count
    return count;
}
  
// Driver code 
public static void main(String[] args) 
      
    // Given Number N
    int N = 24;
  
    // Function Call
    System.out.println(countFac(N)); 
  
// This code is contributed by Pratima Pandey

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

   
# Python3 program for the above approach
  
# Function to count the number
# of distinct positive power of
# prime factor of integer N
def countFac(n):
      
    m = n
    count = 0
  
    # Iterate for all prime factor
    i = 2
    while((i * i) <= m):
        total = 0
  
        # If it is a prime factor,
        # count the total number
        # of times it divides n.
        while (n % i == 0):
            n /= i
            total += 1
          
        temp = 0
  
        # Find the Number of distinct
        # possible positive numbers
        j = 1
        while((temp + j) <= total):
            temp += j
            count += 1
            j += 1
          
        i += 1
      
    if (n != 1):
        count += 1
  
    # Return the final count
    return count
  
# Driver Code
  
# Given number N
N = 24
  
# Function call
print(countFac(N))
  
# This code is contributed by sanjoy_62

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for the above approach 
using System;
class GFG{ 
  
// Function to count the number
// of distinct positive power of
// prime factor of integer N
static int countFac(int n)
{
    int m = n;
    int count = 0;
  
    // Iterate for all prime factor
    for(int i = 2; (i * i) <= m; ++i)
    {
       int total = 0;
         
       // If it is a prime factor,
       // count the total number
       // of times it divides n.
       while (n % i == 0)
       {
           n /= i;
           ++total;
       }
       int temp = 0;
         
       // Find the Number of distinct
       // possible positive numbers
       for(int j = 1; (temp + j) <= total; ++j)
       {
          temp += j;
          ++count;
       }
    }
    if (n != 1)
        ++count;
          
    // Return the final count
    return count;
}
  
// Driver code 
public static void Main() 
      
    // Given Number N
    int N = 24;
  
    // Function Call
    Console.Write(countFac(N)); 
  
// This code is contributed by Code_Mech

chevron_right


Output:

3

Time complexity: O(sqrt(N))

competitive-programming-img




My Personal Notes arrow_drop_up
Recommended Articles
Page :