【题目描述】
两个质数的和是S,它们的积最大是多少?
【输入】
一个不大于10000的正整数S,为两个质数的和。
【输出】
一个整数,为两个质数的最大乘积。数据保证有解。
【输入样例】
50
【输出样例】
589
【源程序】
#include<iostream>
#include<cmath>
using namespace std;
bool judge(int x);
int main()
{
int s;
int i;
cin>>s;//输入正整数s
for(i=s/2; i>=2; i--) //和为定值的两个数,越接近,数越大,因此从中间拆分
if(judge(i)&&judge(s-i))//判断拆分的两个数是否为素数
{
cout<<i*(s-i)<<endl;//若是,输出两数积
break;//终止循环
}
return 0;
}
bool judge(int x)//判断素数
{
int i;
if(x==2) return true;
for(i=2; i<=sqrt(x); i++)
if(x%i==0)
return false;
return true;
}