zoukankan      html  css  js  c++  java
  • 杭电 1262 寻找素数对 【素数】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1262

    解题思路:先将题目中给出的偶数范围内的素数打表,设输入的那个偶数为n,这样找到n/2在素数表的位置k,从pn[k]到pn[2];以及从pn[k]到pn[10000]依次判断相加是否等于n即可。

    反思:注意像 10和26这样的偶数,应该输出的是 5 5;13 13;所以应该单独处理这种n/2等于一个素数的偶数

    ps:这是在杭电的100题,这三个多月来,加油!!!!!fighting!!!!!!

    #include <stdio.h>
    #include <math.h>
    #define N 10000
     int p[N];   //判断p[i]中的i是否为素数
    int pn[N];   //存储素数
    
    void prim_num()
    {
        int i,j,n;
        for(i=1; i<=N; i++)
            p[i]=1;
        n=(int)sqrt(N);
        for(i=2; i<=n; i++)
        {
            for(j=i+i; j<=N; j+=i)   //素数的合肯定不是素数,这就是判断哪些数不是素数
            {
                p[j]=0;
            }
        }
        j=1;
        for(i=1; i<=N; i++)  //把素数存储入pn[N],下表从1开始
        {
            if(p[i])
            {
                pn[j++]=i;
            }
        }
    }
    
    int main()
    {
        int i,j,k;
        int n;
        prim_num();
        while(scanf("%d",&n)!=EOF)
        {
            int flag=1;
            for(i=2;i<N;i++)
            {
                if(n/2==pn[i])
                {
                    k=i;
                    break;
                }
                if(n/2>pn[i]&&n/2<pn[i+1])
                {
                    k=i;
                    break;
                }
    
            }
            for(i=k;i>=0&&flag;i--)
            {
                for(j=i;j<N;j++)
                {
                    if(pn[i]+pn[j]==n)
                    {
                        printf("%d %d
    ",pn[i],pn[j]);
                        flag=0;
    
                    }
                }
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    E. Construct the Binary Tree
    Information Disturbing (树型DP + 二分)
    The Ghost Blows Light
    GeoDefense
    Apple Tree (可以重复走)
    Find Metal Mineral
    Rebuilding Roads
    CSS选择器
    CSS清除浮动的几种有效方法
    电话号码分身(小米2017秋招真题)
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4116118.html
Copyright © 2011-2022 走看看