本文主要是介绍2.2基本算法之递归和自调用函数1751:分解因数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * ... * an,并且1 < a1 <= a2 <= a3 <= ... <= an,问这样的分解的种数有多少。注意到a = a也是一种分解。
#include<bits/stdc++.h>
using namespace std;
int cnt;
int fun(int a,int b){//分解a,从b开始
for(int i=b;i<=a;i++){
if(a%i==0){//判断能否除尽
if(a==i){//判断是否除到了最后
cnt++;//是的话个数+1,代表一次分解
}
else{
fun(a/i,i);//否则继续分解a/i,从i分解(递归)
}
}
}
return cnt;
}
int main(){
int n,a;//1.n组数据a
cin>>n;
for(int i=0;i<n;i++){
cin>>a;//2.输入数据a
cnt=0;//cnt是分解出来的个数
cout<<fun(a,2)<<endl;//开始分解a,从2开始
}
return 0;
}
说一句:大家不要当键盘侠,谢谢!!!
这篇关于2.2基本算法之递归和自调用函数1751:分解因数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!