首页 > 其他 > 详细

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

时间:2019-10-26 12:39:12      阅读:68      评论:0      收藏:0      [点我收藏+]

题目链接: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;

 

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

原文:https://www.cnblogs.com/acmer-hmin/p/11742451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!