zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    第一阶段各队建议
    解决死锁四大方式
    进程和线程区别
    windows 地址空间分配
    Linux下用户组、文件权限详解
    2016总结
    class内部处理
    c++ devived object model
    static
    reinterpret
  • 原文地址:https://www.cnblogs.com/-Iris-/p/12247441.html
Copyright © 2011-2022 走看看