B2134 質數的和與積

HelloHeBin發表於2024-03-22
  • 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;
}

相關文章