给定整数N ,任务是找到N的复合因子的总数。数量的综合因素不是主要因素。
例子:
Input: N = 24
Output: 5
1, 2, 3, 4, 6, 8, 12 and 24 are the factors of 24.
Out of which only 4, 6, 8, 12 and 24 are composites.
Input: N = 100
Output: 6
方法:
- 查找N的所有因子并将其存储在变量totalFactors中
- 找到N的所有素数因子并将其存储在变量primeFactors中
- 现在,总复合因子将为totalFactors – primeFactors – 1 (减去1是因为1既不是素数也不是复合数)。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the count
// of prime factors of n
int composite_factors(int n)
{
int count = 0;
int i, j;
// Initialise array with 0
int a[n + 1] = { 0 };
for (i = 1; i <= n; ++i) {
if (n % i == 0) {
// Stored i value into an array
a[i] = i;
}
}
// Every non-zero value at a[i] denotes
// that i is a factor of n
for (i = 2; i <= n; i++) {
j = 2;
int p = 1;
// Find if i is prime
while (j < a[i]) {
if (a[i] % j == 0) {
p = 0;
break;
}
j++;
}
// If i is a factor of n
// and i is not prime
if (p == 0 && a[i] != 0) {
count++;
}
}
return count;
}
// Driver code
int main()
{
int n = 100;
cout << composite_factors(n);
return 0;
}
Java
// Java implementation of the approach
import java.util.*;
class Gfg
{
// Function to return the count
// of prime factors of n
public static int composite_factors(int n)
{
int count = 0;
int i, j;
// Initialise array with 0
int[] a=new int[n+1];
for( i = 0; i < n; i++)
{
a[i]=0;
}
for (i = 1; i <= n; ++i)
{
if (n % i == 0)
{
// Stored i value into an array
a[i] = i;
}
}
// Every non-zero value at a[i] denotes
// that i is a factor of n
for (i = 2; i <= n; i++)
{
j = 2;
int p = 1;
// Find if i is prime
while (j < a[i])
{
if (a[i] % j == 0)
{
p = 0;
break;
}
j++;
}
// If i is a factor of n
// and i is not prime
if (p == 0 && a[i] != 0)
{
count++;
}
}
return count;
}
// Driver code
public static void main(String[] args)
{
int n = 100;
System.out.println(composite_factors(n));
}
}
// This code is contributed by nidhi16bcs2007
Python3
# Python3 implementation of the approach
# Function to return the count
# of prime factors of n
def composite_factors(n) :
count = 0;
# Initialise array with 0
a = [0]*(n + 1) ;
for i in range(1, n + 1) :
if (n % i == 0) :
# Stored i value into an array
a[i] = i;
# Every non-zero value at a[i] denotes
# that i is a factor of n
for i in range(2,n + 1) :
j = 2;
p = 1;
# Find if i is prime
while (j < a[i]) :
if (a[i] % j == 0) :
p = 0;
break;
j += 1;
# If i is a factor of n
# and i is not prime
if (p == 0 and a[i] != 0) :
count += 1;
return count;
# Driver code
if __name__ == "__main__" :
n = 100;
print(composite_factors(n));
# This code is contributed by AnkitRai01
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to return the count
// of prime factors of n
static int composite_factors(int n)
{
int count = 0;
int i, j;
// Initialise array with 0
int[] a = new int[n + 1];
for( i = 0; i < n; i++)
{
a[i]=0;
}
for (i = 1; i <= n; ++i)
{
if (n % i == 0)
{
// Stored i value into an array
a[i] = i;
}
}
// Every non-zero value at a[i] denotes
// that i is a factor of n
for (i = 2; i <= n; i++)
{
j = 2;
int p = 1;
// Find if i is prime
while (j < a[i])
{
if (a[i] % j == 0)
{
p = 0;
break;
}
j+=1;
}
// If i is a factor of n
// and i is not prime
if (p == 0 && a[i] != 0)
{
count += 1;
}
}
return count;
}
// Driver code
public static void Main()
{
int n = 100;
Console.WriteLine(composite_factors(n));
}
}
// This code is contributed by mohit kumar 29
输出:
6