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