题目描述
大于1的正整数 n 都可以分解为 n = x1 * x2 * … * xm。例如:当n=12时,共有8种不同的分解式:
12 = 12
12 = 62
12 = 43
12 = 34
12 = 322
12 = 26
12 = 232
12 = 223
对于给定正整数n,计算n共有多少种不同的分解式。
输入
一行一个正整数n (1<=n<=1000000)
输出
n不同的分解式数目。
样例输入 Copy
12
20
10
样例输出 Copy
8
8
3
#include<iostream>
using namespace std;
int c = 0;
bool judge(int x)
{
for (int i = 2; i < x; i++)
if (x % i == 0)return false;
return true;
}
void dns(int m)
{
for (int i = 2; i < m; i++)
{
if (m % i == 0)
{
c++;
if (!judge(m / i))
dns(m / i);
}
}
}
int main()
{
int n;
while (cin >> n)
{
dns(n);
cout << c + 1 << endl;
c = 0;
}
}