正整数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;
}
目录
相关文章
|
9月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
分解质因数---输出一个数的所有质数因子
分解质因数---输出一个数的所有质数因子
156 0
|
算法
[算法]将一个正整数拆分成若干个正整数的和,输出所有的结果不重复
推荐先看我的一篇介绍Set去重的博文地址是 http://blog.csdn.net/bug_moving 看了这个之后,再来看下面的程序基本就能看懂了 题目 我也不太记得,因为是朋友给我口述的,然后给了我一个截图,看了图片大致也能知道题目要我们做什么 package yn; import java.util.ArrayList; import java.
2828 0
|
测试技术
输出全排列 (20 分)(dfs模板题)
输出全排列 (20 分)(dfs模板题)
116 0
|
机器学习/深度学习 算法
2044. 统计按位或能得到最大值的子集数目 :「二进制枚举」&「状压 DP」&「DFS」
2044. 统计按位或能得到最大值的子集数目 :「二进制枚举」&「状压 DP」&「DFS」
(JAVA编程练习):一个整数,它加上100后是平方数,再加上168又是一个平方数,该数是?+ 输入三个数,进行小到大排序。
(JAVA编程练习):一个整数,它加上100后是平方数,再加上168又是一个平方数,该数是?+ 输入三个数,进行小到大排序。
(JAVA编程练习):一个整数,它加上100后是平方数,再加上168又是一个平方数,该数是?+ 输入三个数,进行小到大排序。
LeetCode 2059. 转化数字的最小运算数(BFS)
LeetCode 2059. 转化数字的最小运算数(BFS)
139 0

热门文章

最新文章