|
描述
两个质数的和是S,它们的积最大是多少?
输入
一个不大于10000的正整数S,为两个质数的和。
输出
一个整数,为两个质数的最大乘积。数据保证有解。
样例输入
50
样例输出
589
来源
《奥数典型题举一反三(小学五年级)》 (ISBN 978-7-5445-2882-5) 第三章 第二讲 例1
#include<cstdio>
#include<cmath>
bool isprime(int n)
{
if(n < 2) return false;
if(n == 2) return true;
for(int i = 2; i <= sqrt(n); ++i)
{
if(n%i==0) return false;
}
return true;
}
int main()
{
int s;
scanf("%d",&s);
for(int i = s/2; i >= 1; -- i)//和为定值的两个数,越接近积越大,故从中间开始拆分
{
if(isprime(i) && isprime(s-i))
{
printf("%d", i*(s-i));
break;
}
}
return 0;
}
|