洛谷--P1579 哥德巴赫猜想(升级版)

2019-10-28 06:19:20来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

洛谷--P1579 哥德巴赫猜想(升级版)

题目链接:https://www.luogu.org/problem/P1579

任何一个大于9的奇数都可以表示成3个质数之和。既然他是奇数,那么他必定是

1、两个偶数+一个奇数;

2、三个奇数

对于两个偶数,也只有2满足条件,因此他只能是2、2、n-4;只要判断n-4是否满足质数就OK了;

对于两个奇数,循环判断一下,从i=3开始,找到 i 之后, j 从 i 开始,找到 j 之后,再判断n-i-j是否满足条件

以下代码可供参考:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 1001;
 4 int isprime(int k)
 5 {
 6     for(int i=2;i<=sqrt(k);i++)
 7     {
 8         if(k%i==0)
 9             return 0;
10     }
11     return 1;
12 }
13 int main() {
14     int n;
15     cin>>n;
16     if(isprime(n-4))
17     {
18         cout<<2<<' '<<2<<' '<<n-4<<endl;
19     }
20     else
21     {
22         for(int i=3;i<n;i++)
23         {
24             if(i%2!=0&&isprime(i))
25             {
26                 for(int j=i;j<n;j++)
27                 {
28                     if(j%2!=0&&isprime(j))
29                     {
30                         if((n-i-j)%2!=0&&isprime(n-i-j))
31                        {
32                           cout<<i<<' '<<j<<' '<<n-i-j<<endl;
33                             return 0; 
34                        } 
35                 }
36             }
37         }
38     }
39     }
40     return 0;

 


原文链接:https://www.cnblogs.com/acmer-hmin/p/11742451.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:cin.get()解密

下一篇:BJFU-225-基于链表的两个递增有序序列的合并