【题目描述】
两个质数的和是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;
}
信息学奥赛一本通T1405:函数 质数的和与积 归属于 函数,更多同类题解源程序见:函数 和 质数的和与积
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!