小学奥数:质数的和与积

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 08:26   514   0

描述

两个质数的和是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;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP