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