zoukankan      html  css  js  c++  java
  • 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
    ",i,N-i);
    35                     ok=0;
    36                     break;
    37                 }
    38             }
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    找细胞(题解)
    关于dfs
    奇怪的电梯(题解)
    信息解码(Message Decoding ACM/ICPC 1991)
    查找最大元素
    8皇后问题(dfs)
    如何利用dfs遍历树
    dfs(计算细胞数量)
    决策树减支问题(优化)dfs减支问题
    组合数问题
  • 原文地址:https://www.cnblogs.com/zzqc/p/7470626.html
Copyright © 2011-2022 走看看