1405 两素数的和与最大积

Posted -iris-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1405 两素数的和与最大积相关的知识,希望对你有一定的参考价值。

这个题首先对S

其中的一个素数进行穷举

当一个满足为素数时

借助和来求另一个素数

再通过判断此素数是否满足

最后

当两个数和确定后,若两个数的绝对值越小

其对应乘积越大

故得出答案

代码如下

 1 ///【题目描述】
 2 //两个质数的和是S,它们的积最大是多少?
 3 
 4 //【输入】
 5 //一个不大于10000的正整数S,为两个质数的和。
 6 
 7 //【输出】
 8 //一个整数,为两个质数的最大乘积。数据保证有解。
 9 
10 //【输入样例】
11 //50
12 //【输出样例】
13 //589
14 
15 #include<iostream>
16 #include<cmath>
17 using namespace std;
18 int dfs(int);
19 int u[1];
20 int S;
21 int main()
22 {
23     cin>>S;
24     cout<<dfs(S);
25 }
26 int dfs(int S)
27 {
28     int l,p,i,q,k,o=10000;
29     for(p=2;p<=S;p++)
30         {int k=0,h=0;
31          for(i=2;i<=sqrt(p);i++)
32             if(p%i==0) k++;
33         if(p==i) continue;
34          if(k==0) {
35          q=S-p;
36          for(i=2;i<=sqrt(q);i++)
37             if(q%i==0) h++;
38          if(h==0) l=abs(p-q);
39          if(l<o) {o=l;u[1]=q;}
40            }
41         }
42         return u[1]*(S-u[1]);
43 }

 

以上是关于1405 两素数的和与最大积的主要内容,如果未能解决你的问题,请参考以下文章

C语言求范围之内素数的和与个数?

定和的n个正整数 求最大积

[PTA]练习8-2 计算两数的和与差

最大子数组的和与积

练习8-2 计算两数的和与差(10 分)

练习8-2 计算两数的和与差 (10 分)