开始使用搜索,迟迟得不到结果,原来使用max时进行初始化,设为最大,使用后没有置为零。
#include<iostream>
#include<algorithm>
using namespace std;
int maxn=0;
void fn(int n,int k,int s){
if(n==1){
maxn=max(maxn,s);
}
for(int i=k+1;i<=n;i++)
if(n%i==0){
fn(n/i,i,s+1);
}
}
int main(){
int T;
cin>>T;
while(T--){
int n;
cin>>n;
fn(n,1,1);
cout<<maxn<<endl;
maxn=0;
}
return 0;
}
之后通过贪心,加枚举,最后ii>n,ii==n都当作一处理
#include<iostream>
using namespace std;
int main(){
int T;
cin>>T;
while(T--){
int sum=1;
int n;
cin>>n;
for(int i=1;i*i<n;i++){
if(n%i==0){
n/=i;
sum++;
}
}
cout<<sum<<endl;
}
return 0;
}</iostream></algorithm></iostream>