📜  查找给定数字的复合因子总数

📅  最后修改于: 2021-05-04 23:14:51             🧑  作者: Mango

给定整数N ,任务是找到N的复合因子的总数。数量的综合因素不是主要因素。

例子:

方法:

  • 查找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