zoukankan      html  css  js  c++  java
  • ______________从时间超限到800ms 到200ms——————2098

    分拆素数和
    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 28685    Accepted Submission(s): 12471
    
    
    Problem Description
    把一个偶数拆成两个不同素数的和,有几种拆法呢?
     
    
    Input
    输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
     
    
    Output
    对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
     
    
    Sample Input
    30
    26
    0
     
    
    Sample Output
    3
    2
     
    
    Source
    2007省赛集训队练习赛(2

    题是水题.....但是 就是写不成.总是超时..还是一些技巧不知道 下面附上原始的800ms

    /*
    和最初写的程序比较起来....这个 比较容易看懂 
    上一个自己就把自己写晕了
    */
    #include<stdio.h>
    int prime(int x); 
    int main()    
    {                 
        int n,i,j,m,a,b,c;      
        while(scanf("%d",&n),n)
        {
            int jishu=0;
            for(i=2;i<n/2;i++)
            {
                j=n-i;
                if(prime(i)==1&&prime(j)==1)
                {
                    jishu++;
                }
            }
            printf("%d
    ",jishu);
        } 
    } 
    int prime(int a)
    {
        int i,t=1;
        for(i=2;i<=a/2;i++)//将输入进来的数字  开始检查. 
        {
            if(a%i==0)   //在这里没有   加括号...
            {
                t=0;
                break;    //   跳出去 
            }
        }
        return t;
        
    }

    下面带上 200ms  直接缩小4倍时间的  代码并且 给出  改动的地方

    /*
    和最初写的程序比较起来....这个 比较容易看懂 
    上一个自己就把自己写晕了
    */
    #include<stdio.h>
    #include<math.h>
    int prime(int x); 
    int main()    
    {                 
        int n,i,j,m,a,b,c;      
        while(scanf("%d",&n),n)
        {
            int jishu=0;
            for(i=2;i<n/2;i++)
            {
                j=n-i;
                if(prime(i)==1&&prime(j)==1)
                {
                    jishu++;
                }
            }
            printf("%d
    ",jishu);
        } 
    } 
    int prime(int a)
    {
        int i,t=1;
        for(i=2;i<=sqar(a);i++)//                              唯一改动的地方 (求是不是素数的时候开平方 这样 能减少  很多运算....时间就是乳沟一样 这里挤挤那里挤挤就有了....) 
        {
            if(a%i==0)   //在这里没有   加括号...
            {
                t=0;
                break;    //   跳出去 
            }
        }
        return t;
        
    }
  • 相关阅读:
    航班预定统计(差分数组+前缀和)
    救生艇
    Xcode 的正确打开方式——Debugging
    多次页面跳转后pop回主界面的问题
    理解Bitcode:一种中间代码
    使用AFNetWorking读取JSON出现NSCocoaErrorDomain Code=3840的解决方法
    No identities are available for signing的解决方法
    Aufree/trip-to-iOS
    Alcatraz -- 一个神奇的管理插件的Xcode插件
    GenericKeychain
  • 原文地址:https://www.cnblogs.com/A-FM/p/5039774.html
Copyright © 2011-2022 走看看