• HDU 2098 分拆素数和


    HDU 2098 分拆素数和

    Time Limit: 1000/1000 MS (Java/Others)

    Memory Limit: 32768/32768K (Java/Others)

    【题目描述 - Problem Description】

      把一个偶数拆成两个不同素数的和,有几种拆法呢?

    【输入 - Input】

    【输出 - Output】

      输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。

      对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

    【输入样例 - Sample Input】

    【输出样例 - Sample Output】

    30

    26

    0

    3

    2

    【题解】

      数据不大,能打表偷懒就打表偷懒吧,素数筛即可。

    【代码 C++】

     1 #include <cstdio>
     2 #include <cstring>
     3 #define mx 10005
     4 int opt[mx];
     5 void rdy(){
     6     bool prim[mx];
     7     memset(prim, 0, sizeof(prim));
     8     prim[2] = 1;
     9     int i, j;
    10     for (i = 3; i < mx; i += 2){
    11         if (prim[i]) continue;
    12         for (j = i << 1; j < mx; j += i) prim[j] = 1;
    13     }
    14     for (i = 3; i < mx; i += 2){
    15         if (prim[i]) continue;
    16         for (++opt[j = i + 2]; j < mx; j += 2){
    17             if (!prim[j] && j + i < mx) ++opt[j + i];
    18         }
    19     }
    20 }
    21 int main(){
    22     rdy();
    23     int a;
    24     while (scanf("%d", &a), a) printf("%d
    ", opt[a]);
    25     return 0;
    26 }
  • 相关阅读:
    C++总结
    Perl注释格式
    处理压力测试中的问题
    C++标准库中的时间函数
    C语言中如何使用宏 转载
    探索C++的秘密之详解extern "C"
    调试代码的技巧
    又长一岁
    [转]pycharm的一些快捷键
    dizhi
  • 原文地址:https://www.cnblogs.com/Simon-X/p/5472291.html
Copyright © 2020-2023  润新知