怎样快速求出一个数的所有最小因子的和 ?
http://acm.zju.edu.cn/show_problem.php?pid=1133
是这个问题
我已经尽可能改进程序的速度了,能不调用函数的地方尽量不调用.
可是 还是太慢了.我实在是无能为力了.
#include <iostream.h>
long Sum(long num)
{
long sum=0;
while(num)
{
sum=sum+num%10;
num=num/10;
}
return sum;
}
long Prime(long num)
{
long s;
if(num%2==0) return 2;
for(s=3;s<num/2;s=s+2)
{
if(num%s==0) return s;
}
return num;
}
int main()
{
long need,sum=0,prime,t,Num;
cin>>need;
while(need!=0)
{
for(Num=need+1;;Num++)
{
if(Num!=Prime(Num))
{
for(prime=Num,sum=0,t=0;prime>1;prime=prime/t)
{
t=Prime(prime);
if(t<10)
sum=sum+t;
else
sum=sum+Sum(t);
}
if(sum==Sum(Num))
{
cout<<Num<<endl;
break;
}
}
}
cin>>need;
}
return 0;
}