洛谷--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;

 

posted @ 2019-10-26 12:09  清蒸母猪  阅读(298)  评论(0编辑  收藏  举报