正整数n不同分解式的个数(DFS)

简介: 正整数n不同分解式的个数(DFS)

对于大于1的正整数n,可以分解为n=x1* x2 …… xm,其中xi>=2。例如n=12时有8种不同的分解,即12=12,12=6 * 2,12=4 * 3,12=3*4,12=3 * 2 * 2,12=2 * 6,12=2 * 3 * 2,12=2 * 2 * 3;设计一个算法求n的不同分解式的个数。(来源于《算法设计与分析(第2版)李春葆》)


输入格式:

输入一个正整数n


输出格式:

输出1个正整数,表示n的不同分解式的个数


输入样例:

12


输出样例:

8


#include <iostream>
using namespace std;
int cnt;
int dfs(int n)
{
    if(n == 1) cnt ++;
    for (int i = 2; i <= n; i ++ )
        if(n % i == 0)
            dfs(n / i);
    return cnt;
}
int main()
{
    int n;
    cin >> n;
    cout << dfs(n) << endl;
    return 0;
}
目录
相关文章
|
2月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
自然语言处理 算法 Python
利用函数求出一个数组最大三个数的乘积
利用函数求出一个数组最大三个数的乘积
96 0
|
存储 算法 索引
算法 | 100000 个数的求和只需要 O(1),可能吗?
算法 | 100000 个数的求和只需要 O(1),可能吗?
83 0
算法 | 100000 个数的求和只需要 O(1),可能吗?
给你一组数,求出其中两两最大公约数中最大的值
给你一组数,求出其中两两最大公约数中最大的值
49 0
求出任意非负整数区间中1出现的次数
求出任意非负整数区间中1出现的次数
82 0
|
测试技术
输出全排列 (20 分)(dfs模板题)
输出全排列 (20 分)(dfs模板题)
94 0
AcWing 53. 最小的k个数
AcWing 53. 最小的k个数
55 0
AcWing 53. 最小的k个数
|
机器学习/深度学习 算法
2044. 统计按位或能得到最大值的子集数目 :「二进制枚举」&「状压 DP」&「DFS」
2044. 统计按位或能得到最大值的子集数目 :「二进制枚举」&「状压 DP」&「DFS」
|
C语言 UED
[解题报告]【第36题】给定一个数,判断这个数是不是素数
[解题报告]【第36题】给定一个数,判断这个数是不是素数
[解题报告]【第36题】给定一个数,判断这个数是不是素数

热门文章

最新文章