zoukankan      html  css  js  c++  java
  • 题解 P1579 【哥德巴赫猜想(升级版)】

    蒟蒻AC代码,讲解请看题解中.

     1 #include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<cmath>   //头文件
     4 
     5 using namespace std;//开辟名称空间
     6 
     7 int tst,k,b[20005];//定义,其中b[20005]用来装所有质数
     8 
     9 int main()
    10 {
    11     cin>>tst;//输入
    12     //==============================下面部分用来生成质数表
    13     int i, n;
    14     for (n = 2; n <=20000; n++)
    15     {
    16         for (i = 2; i <= sqrt(n); i++)//sqrt用来增快速度
    17         if (n%i == 0)
    18         break;
    19         if (i>sqrt(n)){b[k]=n;k++;}//k有两个作用1.是不让b数组出现有0。2.找到20000以内质数的个数
    20     }
    21     //==============================上面部分用来生成质数表
    22 
    23     for(int i=0;i<k-1;i++)//判断第一个数因为要求尽量小所以加加,另外k(质数的个数)要减一因为是从0开始的
    24     {
    25         for(int j=0;j<k-1;j++)//判断第二个数因为要求尽量小所以加加,另外k(质数的个数)要减一因为是从0开始的
    26         {
    27             for(int aaa=k-1;aaa>=0;aaa--)//判断第三个数因为要求尽量大所以减减,另外k(质数的个数)要减一因为是从0开始的
    28             {
    29                 if(b[i]+b[j]+b[aaa]==tst)//假如满足条件
    30                 {
    31                     cout<<b[i]<<' '<<b[j]<<' '<<b[aaa]<<endl;//输出
    32                     return 0;//因为已经找到最佳条件,所以直接退出循环
    33                 }
    34             }
    35 
    36         }
    37     }
    38     return 0;//这里其实不必,因为输入的数一定是个大于10的奇数,所以会在循环里退出
    39 } 
    作者:BiuBiu_Miku

    -----------------------------------------------

    个性签名:天生我材必有用,千金散尽还复来!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

  • 相关阅读:
    HDU 1000 A + B Problem
    HDU 3635 Dragon Balls
    HDU 3461 Code Lock
    HDU 1856 More is better
    HDU 1198 Farm Irrigation
    HDU 1325 Is It A Tree?
    HDU 1001 Sum Problem
    HDU 1829 A Bug's Life
    HDU 2610 Sequence one
    HDU 3350 #define is unsafe
  • 原文地址:https://www.cnblogs.com/BiuBiu-Miku/p/12249056.html
Copyright © 2011-2022 走看看