Description
大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm, 每个xi为大于1的因子,即1<xi<=n 。
例如:当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,计算n共有多少种不同的分解式。
输入格式
第一行一个正整数n (1<=n<=1000000)
输出格式
不同的分解式数目
输入样例
12
输出样例
8
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <cstdio>
#include <cmath>
#include <algorithm>
int solve(int n);
int main()
{
int n;
scanf("%d", &n);
int num = solve(n);
printf("%d\n", num);
return 0;
}
int solve(int n) {
int count1 = 0;
if(n == 1) return 1;
for(int i = 2; i <= n; i++) {
if(n % i == 0) {
count1 += solve(n / i);
}
}
return count1;
}