uva 10168 哥德巴赫猜想

Posted zzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva 10168 哥德巴赫猜想相关的知识,希望对你有一定的参考价值。

https://vjudge.net/problem/UVA-10168

   给出一个整数n,问是否能将它化为四个素数相加的形式,如果可以的话就输出这四个数。显然n<8时是不可能的。对于大于等于8得数,如果是个奇数,可以将其-2-3形成一个偶数,同理将偶数-2-2形成另一个偶数。哥德巴赫猜想是对于任意大于等于6的偶数都能分解为两个奇素数的和,正好将这个偶数再次分为两个素数加上前面的两个凑成四个。

  
ps.难道数据很弱么1000w的范围竟然30ms就跑完了欸

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<vector>
 5 #include<cmath>
 6 using namespace std;
 7 #define LL long long
 8 #define inf 0x3f3f3f3f
 9 bool is[10000005];
10 void prepare()
11 {
12     is[0]=is[1]=1;
13     int m=sqrt(10000000+0.5);
14     for(int i=2;i<=m;++i)
15     {
16         if(!is[i]){
17             for(int j=i*i;j<=10000000;j+=i)
18                 is[j]=1;
19         }
20     }
21 }
22 int main()
23 {
24     int N,i,j,k;
25     prepare();
26     while(scanf("%d",&N)==1){
27             if(N<8) {puts("Impossible.");continue;}
28             if(N%2==1){printf("2 3");N-=5;}
29             else      {printf("2 2");N-=4;}
30             int m=N/2;
31             bool ok=1;
32             for(i=2;;i++){
33                 if(is[i]==0&&is[N-i]==0){
34                     printf(" %d %d\n",i,N-i);
35                     ok=0;
36                     break;
37                 }
38             }
39     }
40     return 0;
41 }

 

以上是关于uva 10168 哥德巴赫猜想的主要内容,如果未能解决你的问题,请参考以下文章

UVa 1442 - Cave

哥德巴赫猜想的代码实现和分析

那位大佬看看这个 哥德巴赫猜想代码哪不对,运行不起来

ZZNUOJ_C语言1093:验证哥德巴赫猜想(函数专题)(完整代码)

例29:哥德巴赫猜想

实验1: 验证歌德巴赫猜想 (统计其关键语句的执行次数(Java代码实现) & 绘制规模-执行次数散点图)