- 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;
}