zoukankan      html  css  js  c++  java
  • HDU 1262 寻找素数对 模拟题

    题目描述:输入一个偶数,判断这个偶数可以由哪两个差值最小的素数相加,输出这两个素数。

    题目分析:模拟题,注意的是为了提高效率,在逐个进行判断时,只要从2判断到n/2就可以了,并且最好用打表法判断素数。代码附上。。。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 const int MAX = 10005;
     5 bool prim[MAX];
     6 void dabiao() {           //先打素数表 
     7     memset(prim,0,sizeof(prim));
     8     for(int i = 4;i<=MAX;i+=2)
     9     prim[i] = 1;
    10     int d = sqrt(MAX);
    11     for(int i = 2;i<d;++i) {
    12         if(prim[i])
    13         continue;
    14         for(int j = i*i;j<MAX;j+=i)
    15         prim[j] = 1;
    16     }
    17 }
    18 int main( ) {
    19     int n;
    20     dabiao();
    21     while(scanf("%d",&n)!=EOF) {
    22         int loc,MIN = MAX;
    23         for(int i = 2;i<=n/2;++i)
    24         if(!prim[i]&&!prim[n-i]&&(n-2*i)<MIN)
    25         loc = i;
    26         printf("%d %d
    ",loc,n-loc);
    27     }
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    gcc相关
    test
    第二次课
    VS快捷键
    第7章 站在对象模型的尖端
    第6章 执行期语意学
    第5章 构造, 析构, 拷贝语意学
    第4章 Function语意学
    第一次课
    第3章 Data语意学
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3200865.html
Copyright © 2011-2022 走看看