zoukankan      html  css  js  c++  java
  • POJ_3143 验证“歌德巴赫猜想”

    今天晚上的火车回家啦。所以提前更出来~。愉快的收拾我的包裹~滚回家吃半个月~胖几斤又要回学校啦~

    T T这个假期虽然很忙。但是我觉得很有意义。很有价值~爱你们~

    描述

                验证“歌德巴赫猜想”,即:任意一个大于等于6的偶数均可表示成两个素数之和。

    输入

               输入只有一个正整数x。(x<=2000)输出如果x不是“大于等于6的偶数”,则输出一行:
               Error!
               否则输出这个数的所有分解形式,形式为:
               x=y+z
               其中x为待验证的数,y和z满足y+z=x,而且y<=z,y和z均是素数。
               如果存在多组分解形式,则按照y的升序输出所有的分解,每行一个分解表达式。

               注意输出不要有多余的空格。

    样例输入

    输入样例1:
    7
    输入样例2:
    10
    输入样例3:
    100

    样例输出

    输出样例1:
    Error!
    输出样例2:
    10=3+7
    10=5+5
    输出样例3:
    100=3+97
    100=11+89
    100=17+83
    100=29+71
    100=41+59
    100=47+53

    代码如下

     1 #include <cstdio>
     2 #include <cmath>
     3 int primenumber(int kk){
     4     int i;
     5     int k=(int)sqrt(kk);
     6     for(i=2;i<=k;i++){
     7        if(kk%i==0)
     8           break;
     9     }
    10     if(i<=k){
    11         return 0;
    12     }else{
    13         return 1;
    14     }
    15 }
    16 int main()
    17 {
    18     int x;
    19     scanf("%d",&x);
    20     for(int y=2;y<=x/2;y++){
    21         if(x<6||x%2!=0){
    22            printf("Error!
    ");
    23            break;
    24         }
    25         int z=x-y;
    26         if(primenumber(y)&&primenumber(z)){
    27             printf("%d=%d+%d
    ",x,y,z);
    28         }
    29     }
    30     
    31     return 0;
    32 } 

    思路解析

                枚举,并判断y与z是否为素数。小心素数的判定即可。不要把1算上。

  • 相关阅读:
    javascript的基本语法
    javascript的初步认识
    就诊管理(数据结构小学期)
    软件工程课程总结
    每日学习(个人作业2)
    每日学习(个人作业2)
    每日学习(个人作业2)
    每日学习(个人作业2)
    Java中后端Bigdecimal传值到前端精度丢失问题
    这学期的加分项
  • 原文地址:https://www.cnblogs.com/xzt6/p/5735707.html
Copyright © 2011-2022 走看看