B2134 质数的和与积

质数的和与积

题目描述

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

输入格式

一个不大于 \(10000\) 的正整数 \(S\),为两个质数的和。

输出格式

一个整数,为两个质数的最大乘积。数据保证有解。

样例 #1

样例输入 #1

50

样例输出 #1

589
  • 参考程序
#include<bits/stdc++.h>
using namespace std;

bool isp(int n){
//  素数,质数:大于 1的自然数,因子只有 1 和本身 的数
//  合数: 大于 1的自然数,不是素数的数 
//  n -- [2, n-1]
//  n = a*b, a<=b   --- n = a*a  ---- a<=sqrt(n)
    for(int i=2; i<=n/i; i++) if(n%i ==0 ) return 0;
    return n > 1;
}
int main(){
    int s, ans=0; cin>>s;
    for(int a=2; a<=s; a++){
        int b = s-a;
        if(isp(a) && isp(b)) ans=max(ans, a*b);
    }
    cout<<ans;
    return 0;
}
posted @ 2024-03-22 18:28  HelloHeBin  阅读(152)  评论(0编辑  收藏  举报