【递归】先修课 计算概论(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\n"); 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\n",ans+1); 35 } 36 return 0; 37 }
ORZ SZY。
——The Solution By AutSky_JadeK From UESTC
转载请注明出处:http://www.cnblogs.com/autsky-jadek/