对于大于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;
}