http://noi.openjudge.cn/ch0201/7827/
描述
两个质数的和是S,它们的积最大是多少?
输入
一个不大于10000的正整数S,为两个质数的和。
输出
一个整数,为两个质数的最大乘积。数据保证有解。
样例输入
50
样例输出
589
代码
#include<bits/stdc++.h>
using namespace std;
#define N 10000
bool prime[N+1];
void L(int n)
{
memset(prime,true,sizeof(prime));
prime[1]=false;
// 筛选
for(int i=2; i<=sqrt(n); i++)
if(prime[i])
for(int j=i+i; j<=n; j+=i)
prime[j]=0;
}
int main()
{
int s;
int i,j;
L(N);
cin>>s;
if(s & 1)
if(prime[s-2])
cout<<2*(s-2);
else
cout<<"0";
else
{
i=j=s/2;
while(prime[i]==false || prime[j]==false)
i++,j--;
cout<<i*j;
}
return 0;
}