• POJ NOI MATH-7827 质数的和与积


    问题链接POJ NOI MATH-7827 质数的和与积



    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述

    两个质数的和是S,它们的积最大是多少?

    输入
    一个不大于10000的正整数S,为两个质数的和。
    输出
    一个整数,为两个质数的最大乘积。数据保证有解。
    样例输入
    50
    样例输出
    589
    来源
    《奥数典型题举一反三(小学五年级)》 (ISBN 978-7-5445-2882-5) 第三章 第二讲 例1



    问题分析

      需要注意特殊的情形,例如输入的S为4

    程序说明

      程序中,使用埃拉托斯特尼筛选法计算小于10000的素数

      似乎输入的S不为两个素数之和时,需要输出0。




    AC的C++语言程序:

    #include <iostream>
    #include <cmath>
    #include <cstring>
    
    using namespace std;
    
    const int N = 10000;
    
    int prime[N+1];
    
    void esieve(int n)
    {
        memset(prime, 1, sizeof(prime));
        prime[1] = 0;
    
        // 筛选
        int max = sqrt(n);
        for(int i=2; i<=max; i++)
            if(prime[i])
                for(int j=i+i; j <= n; j+=i)
                    prime[j] = 0;
    }
    
    int main()
    {
        int s;
    
        esieve(N);
    
        cin >> s;
    
        if(s & 1)
            if(prime[s- 2])
                cout << 2 * (s - 2) << endl;
            else
                cout << 0 << endl;
        else {
            int i, j;
            i = j = s / 2;
            while(prime[i] == 0 || prime[j] == 0)
                i++, j--;
            cout << i * j << endl;
        }
    
        return 0;
    }



  • 相关阅读:
    oracle plsql 统计
    oracle plsql 自定义异常
    oracle plsql 异常
    oracle 游标
    oracle 存储函数,更新库存
    oracle TRUNC()函数
    plsql 的三种循环
    plsql if
    plsql 记录型变量
    CAS示例环境部署及配置
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563963.html
Copyright © 2020-2023  润新知