| ||||||||||
| 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 | |||||||||
Re:我就是这么干~~~~的,为何TLE??(附代码)(大牛门指点一下)In Reply To:我就是这么干~~~~的,为何TLE??(附代码)(大牛门指点一下) Posted by:superlcc at 2009-07-24 20:35:49 将搜索素数优化一下就OK了!!!!!!(副代码)
#include<stdio.h>
#include<math.h>
int k[1000010]={0};
int b[1000010]={0};
void creatprime()
{
int i,j;
for(i=2;i<1000010;i++){
if(k[i]==1)
continue;
for(j=2;i*j<1000010;j++)
k[i*j]=1;
}
j=0;
for(i=2;i<1000010;i++)
if(k[i]==0)
b[j++]=i;
}
int prime(int k)
{
int i,m;
m=(int)sqrt(k);
for(i=2;i<m+1;i++)
if(k%i==0)
return 0;
return 1;
}
void main()
{
int a,i,done=0;
creatprime();
while(scanf("%d",&a),a!=0)
{
for(i=0;b[i]<a;i++)
//可以试一试让余数是素数
if(prime(a-b[i])){
done=1;
goto out;
}
out: if(done==1)
printf("%d = %d + %d\n",a,b[i],a-b[i]);
else
printf("Goldbach's conjecture is wrong.");
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator