c/c++语言开发共享洛谷–P1579 哥德巴赫猜想(升级版)

题目链接:https://www.luogu.org/problem/P1579 任何一个大于9的奇数都可以表示成3个质数之和。既然他是奇数,那么他必定是 1、两个偶数+一个奇数; 2、三个奇数 对于两个偶数,也只有2满足条件,因此他只能是2、2、n-4;只要判断n-4是否满足质数就OK了; 对于两 …

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

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/601239.html

(0)
上一篇 2021年5月9日
下一篇 2021年5月9日

精彩推荐