【递归】先修课 计算概论(A) / 函数递归练习(3)2:分解因数

 1 #include<cstdio>
 2 using namespace std;
 3 bool is_prime(int x)
 4 {
 5     for(int i=2;i*i<=x;i++) if(x%i==0) return false;
 6     return true;
 7 }
 8 int q,n,ans;
 9 void work(int x,int y)
10 {
11     if(x==1) ans++;
12     else
13       {
14         for(int i=y;i<=x;i++)
15           if(x%i==0)
16             work(x/i,i);
17       }
18 }
19 int main()
20 {
21     scanf("%d",&q);
22     for(;q>0;q--)
23       {
24           ans=0;
25           scanf("%d",&n);
26           if(is_prime(n))
27             {
28                 printf("1
");
29                 continue;
30             }
31           for(int i=2;i<=(n>>1);i++)
32             if(n%i==0)
33               work(n/i,i);
34           printf("%d
",ans+1);
35       }
36     return 0;
37 }

ORZ SZY。

原文地址:https://www.cnblogs.com/autsky-jadek/p/3986550.html