信息学奥赛一本通T1405:函数 质数的和与积

【题目描述】两个质数的和是S,它们的积最大是多少?【输入】一个不大于10000的正整数S,为两个质数的和。【输出】一个整数,为两个质数的最大乘积。数据保证有解。【输入样例】50【输出样例】589【源程序】 

信息学奥赛一本通T1405:质数的和与积

【题目描述】

两个质数的和是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 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章