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^{2 }* 3 * 3^{2}.

The factors satisfying the conditions are 2, 2^{2}, 3 and 3^{2}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 * 2^{2}* 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, p ^{2}, …, p^{i}**.

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++

`// 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*

*filter_none*

## Java

`// 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*

*filter_none*

## C#

`// 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*

*filter_none*

**Output:**

3

**Time complexity:** *O(sqrt(N))*

## Recommended Posts:

- Exactly n distinct prime factor numbers from a to b
- Count all the numbers less than 10^6 whose minimum prime factor is N
- Count of subarrays whose products don't have any repeating prime factor
- Check whether count of distinct characters in a string is Prime or not
- Sort an array according to the increasing count of distinct Prime Factors
- Count of subsequences of length atmost K containing distinct prime elements
- Count of distinct sums that can be obtained by adding prime numbers from given arrays
- Prime Factor
- k-th prime factor of a given number
- N-th prime factor of a given number
- Find power of power under mod of a prime
- Least prime factor of numbers till n
- Find largest prime factor of a number
- Find sum of a number and its maximum prime factor
- Sum of largest prime factor of each number less than equal to n
- Nearest element with at-least one common prime factor
- Queries on the sum of prime factor counts in a range
- Sum of Maximum and Minimum prime factor of every number in the Array
- Find the sum of power of bit count raised to the power B
- Smallest number greater than n that can be represented as a sum of distinct power of k

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.