Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:我就是这么干~~~~的,为何TLE??(附代码)(大牛门指点一下)

Posted by superlcc at 2009-07-25 09:25:33 on Problem 2262
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator