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 |
我这个125MS 有一些主要的地方可以参考下。In Reply To:贴个代码吧,375MS,提交了三次,速度丝毫没变,如果有更快的,欢迎分享 Posted by:luo223 at 2013-09-12 22:27:04 Source Code Problem: 2262 User: lsz2013 Memory: 4088K Time: 125MS Language: C Result: Accepted Source Code #include<stdio.h> #include<math.h> #define MAX 1000001 int prime[MAX]={0}; void sushu() { int i,j; for(i=2;i<sqrt(MAX);i++) //这里必须要sqrt(MAX),若是MAX报错! { if(!prime[i]) { for(j=i*i;j<MAX;j+=i) { prime[j]=1; } } } } int main() { int n,i; sushu(); while (scanf("%d",&n)&&n) { for(i=3;i<=n/2;i+=2) { if(!prime[i]&&!prime[n-i]) { printf("%d = %d + %d\n", n, i, n-i); break; } } } return 0; } 本题大致有两种思路:(1)暴力的素数判断法。(2)先用筛选素数的方法筛选出小于1000000的素数,之后就直接进行查表就行了。 第一种效率要低。对于第二种要注意将数组的定义为全局的,否则不让定义那么大的。 唉,我也是磕磕绊绊的submit过来的,注意= 一定! Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator