大于1的正整数n可以分解为: n=x1*x2*···*xm.
例如,当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<=2000 000 000).
输出
每个数据输出一行,是正整数n的不同的分解式数量。
输入样例
12
35
输出样例
8
3
附上代码:
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 int total; 6 void solve(int n) 7 { 8 if(n==1) total++; 9 else for(int i=2; i<=n; i++) 10 if(n%i==0) solve(n/i); 11 } 12 13 int main() 14 { 15 int n; 16 while(~scanf("%d",&n)) 17 { 18 total=0; 19 solve(n); 20 printf("%d ",total); 21 } 22 return 0; 23 }