Description
大于1的正整数n可以分解为:n=x1*x2*…*xm。 (xi != 1 )
例如,当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。
对于给定的正整数n,计算n共有多少种不同的分解式。
Input
多组数据,可能会有超过10000组。
每组数据输入一行整数N。(0 < N < = 3000)
Output
每组数据输出一行整数M,表示对整数N有多少种分解方法。
Sample Input
4
3
8
12
Sample Output
2
1
4
大于1的正整数n可以分解为:n=x1*x2*…*xm。 (xi != 1 )
例如,当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。
对于给定的正整数n,计算n共有多少种不同的分解式。
Input
多组数据,可能会有超过10000组。
每组数据输入一行整数N。(0 < N < = 3000)
Output
每组数据输出一行整数M,表示对整数N有多少种分解方法。
Sample Input
4
3
8
12
Sample Output
2
1
4
8
#include <iostream>
#include <cstring>
#include <fstream>
#include <cmath>
using namespace std;
int number;
void find(int N) {
for (int i = 2; i < N; i++)
if (N % i == 0) {
number++;
find(i);
}
}
int main() {
int N;
while (cin >> N && cin.peek() != EOF) {
number = 1;
find(N);
cout << number << endl;
}
return 0;
}