| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
各位兄台,TLE的code,看看那能不能优化。#include<stdio.h>
#include<math.h>
int f(__int64 n)
{
__int64 i;
i=0;
while(n/10!=0)
{
i+=n%10;
n=n/10;
}
i+=n%10;
// printf("%I64d\n",i);
return (int)i;
}
int prime(__int64 n)
{
__int64 i,max;
int sum,mid;
sum=0;
mid=-1;
if(n<=1)
{
printf("input erro\n");
return -1;
}
if(n==2||n==3)
{
return -1;
}
else
{
max=(int)sqrt((double)n);//等一下看看能不能优化。
for(i=2;i<=max;i++)
{
if(n%i==0)
{
sum+=f(i);
n=n/i;
mid=0;
max=n;
i--;
}
else
if(mid!=0)
mid=-1;
}
}
if(mid==-1)
return mid;
else
return sum;
}
int main()
{
__int64 n;
__int64 i;
while(1)
{
scanf("%I64d",&n);
if(!n) break;
i=1;
while(1)
{
if(prime(n+i)==-1)
{
i++;
// printf("*\n");
}
else
if(prime(n+i)==f(n+i))
{
printf("%I64d\n",n+i);
break;
}
else
{
i++;
// printf("*\n");
}
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator