• UVa 543


      题目大意:给一个偶数,判断是否是两个素数的和。

      先用sieve方法生成一个素数表,然后再进行判断即可。

     1 #include <cstdio>
     2 #include <vector>
     3 #include <bitset>
     4 using namespace std;
     5 typedef vector<int> vi;
     6 typedef long long ll;
     7 #define MAXN 1000000
     8 
     9 vi primes;
    10 bitset<MAXN+100> bs;
    11 
    12 void sieve(ll upper)
    13 {
    14     bs.set();
    15     bs.set(0, false);
    16     bs.set(1, false);
    17     for (ll i = 2; i <= upper; i++)
    18         if (bs.test((size_t)i))
    19         {
    20             for (ll j = i*i; j <= upper; j += i)
    21                 bs.set((size_t)j, false);
    22             primes.push_back((int)i);
    23         }
    24 }
    25 
    26 int main()
    27 {
    28 #ifdef LOCAL
    29     freopen("in", "r", stdin);
    30 #endif
    31     sieve(MAXN);
    32     int n;
    33     while (scanf("%d", &n) && n)
    34     {
    35         int idx = 1;
    36         bool ok = false;
    37         while (primes[idx] * 2 <= n)
    38         {
    39             int t = n - primes[idx];
    40             if (bs.test((size_t)t))
    41             {
    42                 ok = true;
    43                 break;
    44             }
    45             idx++;
    46         }
    47         if (ok)  printf("%d = %d + %d
    ", n, primes[idx], n-primes[idx]);
    48         else  printf("Goldbach's conjecture is wrong.
    ");
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    事务(十四)
    事务(十三)
    事务(十二)
    事务(十一)
    事务(十)
    try中定义输入流报错:Try-with-resources are not supported at language level '5'
    IDEA新建时没有java class选项
    Hex编码
    Git Bash安装及常规使用
    PostgreSQL数据库
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3329702.html
Copyright © 2020-2023  润新知