打印所有因子组合(因子分解方法)

写一个程序来打印给定数字n的所有因子组合。

null

例如:

Input : 16Output :2 2 2 2         2 2 4         2 8         4 4 Input : 12Output : 2 2 3         2 6         3 4

为了解决这个问题,我们使用一个整数数组或整数列表来存储给定n的所有可能的因子组合。因此,为了实现这一点,我们可以使用一个递归函数来存储每个迭代中的因子组合。每个列表都应该存储在最终结果列表中。

以下是上述方法的实施情况。

输出

2 2 2 2 2 2 4 2 8 4 4 

另一种方法:

下面的代码是用于打印所有因素组合的纯递归代码:

它使用整数向量存储单个因子列表,使用整数向量存储所有因子组合。它不使用迭代循环,而是使用相同的递归函数来计算所有因子组合。

C++

// C++ program to print all factors combination
#include <bits/stdc++.h>
using namespace std;
// vector of vector for storing
// list of factor combinations
vector<vector< int > > factors_combination;
// recursive function
void compute_factors( int current_no, int n, int product,
vector< int > single_list)
{
// base case: if the pruduct
// exceeds our given number;
// OR
// current_no exceeds half the given n
if (current_no > (n / 2) || product > n)
return ;
// if current list of factors
// is contributing to n
if (product == n) {
// storing the list
factors_combination.push_back(single_list);
// into factors_combination
return ;
}
// including current_no in our list
single_list.push_back(current_no);
// trying to get required
// n with including current
// current_no
compute_factors(current_no, n, product * current_no,
single_list);
// excluding current_no from our list
single_list.pop_back();
// trying to get required n
// without including current
// current_no
compute_factors(current_no + 1, n, product,
single_list);
}
// Driver Code
int main()
{
int n = 16;
// vector to store single list of factors
// eg. 2,2,2,2 is one of the list for n=16
vector< int > single_list;
// compute_factors ( starting_no, given_n,
// our_current_product, vector )
compute_factors(2, n, 1, single_list);
// printing all possible factors stored in
// factors_combination
for ( int i = 0; i < factors_combination.size(); i++) {
for ( int j = 0; j < factors_combination[i].size();
j++)
cout << factors_combination[i][j] << " " ;
cout << endl;
}
return 0;
}
// code contributed by Devendra Kolhe


JAVA

// Java program to print all factors combination
import java.util.*;
class GFG{
// vector of vector for storing
// list of factor combinations
static Vector<Vector<Integer>> factors_combination =
new Vector<Vector<Integer>>();
// Recursive function
static void compute_factors( int current_no, int n, int product,
Vector<Integer> single_list)
{
// base case: if the pruduct
// exceeds our given number;
// OR
// current_no exceeds half the given n
if (current_no > (n / 2 ) || product > n)
return ;
// If current list of factors
// is contributing to n
if (product == n)
{
// Storing the list
factors_combination.add(single_list);
// Printing all possible factors stored in
// factors_combination
for ( int i = 0 ; i < factors_combination.size(); i++)
{
for ( int j = 0 ; j < factors_combination.get(i).size(); j++)
System.out.print(factors_combination.get(i).get(j) + " " );
}
System.out.println();
factors_combination = new Vector<Vector<Integer>>();
// Into factors_combination
return ;
}
// Including current_no in our list
single_list.add(current_no);
// Trying to get required
// n with including current
// current_no
compute_factors(current_no, n,
product * current_no,
single_list);
// Excluding current_no from our list
single_list.remove(single_list.size() - 1 );
// Trying to get required n
// without including current
// current_no
compute_factors(current_no + 1 , n, product,
single_list);
}
// Driver code
public static void main(String[] args)
{
int n = 16 ;
// Vector to store single list of factors
// eg. 2,2,2,2 is one of the list for n=16
Vector<Integer> single_list = new Vector<Integer>();
// compute_factors ( starting_no, given_n,
// our_current_product, vector )
compute_factors( 2 , n, 1 , single_list);
}
}
// This code is contributed by decode2207


Python3

# Python3 program to print all factors combination
# vector of vector for storing
# list of factor combinations
factors_combination = []
# recursive function
def compute_factors(current_no, n, product, single_list):
global factors_combination
# base case: if the pruduct
# exceeds our given number;
# OR
# current_no exceeds half the given n
if ((current_no > int (n / 2 )) or (product > n)):
return
# if current list of factors
# is contributing to n
if (product = = n):
# storing the list
factors_combination.append(single_list)
# printing all possible factors stored in
# factors_combination
for i in range ( len (factors_combination)):
for j in range ( len (factors_combination[i])):
print (factors_combination[i][j], end = " " )
print ()
factors_combination = []
# into factors_combination
return
# including current_no in our list
single_list.append(current_no)
# trying to get required
# n with including current
# current_no
compute_factors(current_no, n, product * current_no, single_list)
# excluding current_no from our list
single_list.pop()
# trying to get required n
# without including current
# current_no
compute_factors(current_no + 1 , n, product, single_list)
n = 16
# vector to store single list of factors
# eg. 2,2,2,2 is one of the list for n=16
single_list = []
# compute_factors ( starting_no, given_n,
# our_current_product, vector )
compute_factors( 2 , n, 1 , single_list)
# This code is contributed by ukasp.


C#

// C# program to print all factors combination
using System;
using System.Collections.Generic;
class GFG {
// vector of vector for storing
// list of factor combinations
static List<List< int >> factors_combination = new List<List< int >>();
// recursive function
static void compute_factors( int current_no, int n, int product, List< int > single_list)
{
// base case: if the pruduct
// exceeds our given number;
// OR
// current_no exceeds half the given n
if (current_no > (n / 2) || product > n)
return ;
// if current list of factors
// is contributing to n
if (product == n) {
// storing the list
factors_combination.Add(single_list);
// printing all possible factors stored in
// factors_combination
for ( int i = 0; i < factors_combination.Count; i++)
{
for ( int j = 0; j < factors_combination[i].Count; j++)
Console.Write(factors_combination[i][j] + " " );
}
Console.WriteLine();
factors_combination = new List<List< int >>();
// into factors_combination
return ;
}
// including current_no in our list
single_list.Add(current_no);
// trying to get required
// n with including current
// current_no
compute_factors(current_no, n, product * current_no, single_list);
// excluding current_no from our list
single_list.RemoveAt(single_list.Count - 1);
// trying to get required n
// without including current
// current_no
compute_factors(current_no + 1, n, product, single_list);
}
static void Main() {
int n = 16;
// vector to store single list of factors
// eg. 2,2,2,2 is one of the list for n=16
List< int > single_list = new List< int >();
// compute_factors ( starting_no, given_n,
// our_current_product, vector )
compute_factors(2, n, 1, single_list);
}
}
// This code is contributed by divyesh072019.


Javascript

<script>
// Javascript program to print all factors combination
// vector of vector for storing
// list of factor combinations
let factors_combination = [];
// recursive function
function compute_factors(current_no, n, product, single_list)
{
// base case: if the pruduct
// exceeds our given number;
// OR
// current_no exceeds half the given n
if ((current_no > parseInt(n / 2, 10)) || (product > n))
return ;
// if current list of factors
// is contributing to n
if (product == n)
{
// storing the list
factors_combination.push(single_list);
// printing all possible factors stored in
// factors_combination
for (let i = 0; i < factors_combination.length; i++)
{
for (let j = 0; j < factors_combination[i].length; j++)
{
document.write(factors_combination[i][j] + " " );
}
}
document.write( "</br>" );
factors_combination = [];
// into factors_combination
return ;
}
// including current_no in our list
single_list.push(current_no);
// trying to get required
// n with including current
// current_no
compute_factors(current_no, n, product * current_no, single_list);
// excluding current_no from our list
single_list.pop();
// trying to get required n
// without including current
// current_no
compute_factors(current_no + 1, n, product, single_list);
}
let n = 16;
// vector to store single list of factors
// eg. 2,2,2,2 is one of the list for n=16
let single_list = [];
// compute_factors ( starting_no, given_n,
// our_current_product, vector )
compute_factors(2, n, 1, single_list);
// This code is contributed by suresh07.
</script>


输出

2 2 2 2 2 2 4 2 8 4 4 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享