正整数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;
}
目录
相关文章
|
4月前
|
算法 C++
P2404 自然数的拆分问题(DFS)
这篇文章提供了解决自然数拆分问题的深度优先搜索(DFS)算法,包括C++实现代码,用于输出一个自然数拆分为小于等于自身且按字典序排列的所有可能序列。
|
7月前
|
机器学习/深度学习 人工智能 算法
【树】【异或】【深度优先】【DFS时间戳】2322. 从树中删除边的最小分数
【树】【异或】【深度优先】【DFS时间戳】2322. 从树中删除边的最小分数
【递归】递归求n个数中的最大值
【递归】递归求n个数中的最大值
113 0
【递归】递归求n个数中的最大值
|
存储 算法 索引
算法 | 100000 个数的求和只需要 O(1),可能吗?
算法 | 100000 个数的求和只需要 O(1),可能吗?
115 0
算法 | 100000 个数的求和只需要 O(1),可能吗?
|
算法
[算法]将一个正整数拆分成若干个正整数的和,输出所有的结果不重复
推荐先看我的一篇介绍Set去重的博文地址是 http://blog.csdn.net/bug_moving 看了这个之后,再来看下面的程序基本就能看懂了 题目 我也不太记得,因为是朋友给我口述的,然后给了我一个截图,看了图片大致也能知道题目要我们做什么 package yn; import java.util.ArrayList; import java.
2818 0
给你一组数,求出其中两两最大公约数中最大的值
给你一组数,求出其中两两最大公约数中最大的值
68 0
|
测试技术
输出全排列 (20 分)(dfs模板题)
输出全排列 (20 分)(dfs模板题)
113 0
|
Java Scala 开发者
使用递归求出最大值 | 学习笔记
快速学习使用递归求出最大值
|
机器学习/深度学习 算法
2044. 统计按位或能得到最大值的子集数目 :「二进制枚举」&「状压 DP」&「DFS」
2044. 统计按位或能得到最大值的子集数目 :「二进制枚举」&「状压 DP」&「DFS」