这个题首先对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 }