分解因素的种数

题目描述

给出一个正整数a,要求分解成若干个正整数的乘积,即a=a1*a2*a3*...*an,并且1<a1<=a2<=a3<=...<=an,问这样的分解方案有多少种。注意a=a也是一种分解。
 

输入

第一行是测试数据的组数n,后面n行,每行包括一个正整数a(1<a<32768)。

输出

N行,每行输出一个个正整数,表示分解方案数。
 

样例输入

2
2
20

样例输出

1
4
#include <iostream>
#include <cstdio> 
using namespace std;
int f(int n,int m)
{
    int ans=1;              //算上本身那种情况 
    if(n==1) 
            return 0;
   for(int i=m;i*i<=n;i++)//从2开始遍历找所有的能分解的情况 
    {
	  if(n%i==0)
	  {  
	     ans+=f(n/i,i);  
	   } 
	}
	return ans; 
} 
int main()
{  
	int n,a; 
	cin>>n; 
	for(int i=1;i<=n;i++)
	{ 
	    cin>>a;  
    	   cout<< f(a,2)<<endl; 
	 }  
	 return 0; 
}
 

  

 

posted @ 2018-11-12 22:26  道微真理  阅读(504)  评论(0编辑  收藏  举报