给定正整数N ,任务是找到给定数N的质数的幂次方的总数。
例子:
Input: N = 216
Output: 4
Explanation:
216 can be expressed as 2 * 22 * 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
方法:想法是找到N的所有素数以及每个素数除N的次数。
假设素数因子“ p”除以N个“ z”倍,则所需的不同素数因子为p,p 2 ,…,p i 。
为了找到素数p的不同素数因子的数量,找到i的最小值,使得(1 + 2 +…。+ i)≤z 。
因此,对于每个除以N K次的质数,求出i的最小值,使得(1 + 2 +…。+ i)≤K 。
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
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;
}
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
Python3
# 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
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
Javascript
输出:
3
时间复杂度: O(sqrt(N))