发布网友 发布时间:2023-10-10 18:28
共3个回答
热心网友 时间:2024-11-23 12:05
这个用递归式没有错,需要判断这个因子是否为素数,是素数,就是这个因子就只能出现一次,不是素数,继续分解追答意思就是这个因子是素数了,就不用再分解了
不是素数,就再分解,同时可能加上1
热心网友 时间:2024-11-23 12:06
int q(int n){热心网友 时间:2024-11-23 12:06
#include<stdio.h>追答你把递归的方法改为非递归的方式试试,反正递归调用的确是耗时。我先想想。。
我用C++写的,不知道能不能过:
#include
#include
using namespace std;
int main()
{
int i,n,count,current_position;
vectorob;
while(cin>>n)
{
ob.clear();
count=1;
current_position=0;
ob.push_back(n);
ob.push_back(-1);
while(current_position>-1&&ob[current_position]!=-1)
{
n=ob[current_position];
for(i=n/2;i>1;i--)
if(!(n%i))
{
count++;
ob[current_position]=n/i;
ob.push_back(-1);
current_position++;
}
current_position--;
}
cout<<count<<endl;
}
return 0;
}