zoukankan      html  css  js  c++  java
  • PTA 7-4 哥德巴赫猜想 (10分)

    “这是我和其他选手比谁过题过得更快的游戏”

    对于任何大于或等于4的偶数n,存在至少一对素数p1和p2,使得n = p1 + p2
    没有人确定这个猜想是否真的成立。然而,对于给定的偶数,可以找到这样的一对素数(如果有的话)。这里的问题是编写一个程序,打印出满足给定偶数的猜想条件的所有素数对数。
    
    一个偶数序列作为输入。可以有很多这样的数字。对应于每个数字,程序应输出上述对的数量。请注意,我们只统计不同的数对,因此不应将(p1,p2)和(p2,p1)分别计为两对不同的对。
     

    输入格式:

    在每个输入行中给出一个整数。你可以假定每个整数是偶数,并且大于或等于4且小于2的15次方。输入的结尾用数字0表示。

    输出格式:

    每个输出行应该包含一个整数。输出中不应出现其他字符。

    输入样例:

    在这里给出一组输入。例如:

    6
    10
    12
    0
    
     

    输出样例:

    在这里给出相应的输出。例如:

    1
    2
    1
    

    作者: ACM Group
    单位: 集美大学
    时间限制: 400 ms
    内存限制: 64 MB
    代码长度限制: 16 KB
     
     1 import java.io.BufferedReader;
     2 import java.io.IOException;
     3 import java.io.InputStreamReader;
     4 import java.util.ArrayList;
     5 public class Main {
     6     public static void main(String[] args) throws IOException {
     7         BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
     8 //        int n=Integer.parseInt(input.readLine());
     9         boolean [] arr=new boolean[32768];
    10         for(int i=2;i<32768;i++) {
    11             arr[i]=true;
    12         }
    13         
    14         for(int i=2;i<32768;i++) {
    15             if(arr[i]) {
    16                 for(int j=2*i;j<32768;j+=i) {
    17                     arr[j]=false;
    18                 }
    19             }
    20         }
    21 //        while(n!=0) {
    22 //            boolean [] arr=new boolean[n+1];
    23 //            for(int i=2;i<=n;i++) {
    24 //                arr[i]=true;
    25 //            }
    26 //            
    27 //            for(int i=2;i<=n;i++) {
    28 //                if(arr[i]) {
    29 //                    for(int j=2*i;j<=n;j+=i) {
    30 //                        arr[j]=false;
    31 //                    }
    32 //                }
    33 //            }
    34         ArrayList<Integer>integers=new ArrayList<Integer>();
    35         while(true){
    36             int n=Integer.parseInt(input.readLine());
    37             if (n==0) {
    38                 break;
    39             }
    40             int sum=0;
    41             for(int i=2;i<=n/2;i++) {
    42                 if(arr[i]&&arr[n-i]) {
    43                     sum++;
    44                 }
    45             }
    46             integers.add(sum);
    47 //            System.out.println(sum);
    48 //            n=Integer.parseInt(input.readLine());
    49 //            arr=new boolean[n+1];
    50         }
    51 for (int i = 0; i <integers.size(); i++) {
    52     System.out.println(integers.get(i));
    53     
    54 }
    55     }
    56 }

    呃。还没来得及看 记得好像是超时 有空回来补充问题。

    看似不起波澜的日复一日 会突然在某一天 让你看到坚持的意义 ​​​​
  • 相关阅读:
    ASP.NET MVC中 CKeditor 通过两种方法向后台传值以及编码、乱码问题
    如何解析<textarea>标签中的html代码
    ASP.NET MVC中,后台向前台传递多个对象(表)的方法
    ASP.NET MVC 环境下CKeditor 的配置以及用jQuery进行数据存取操作
    jquery下 动态显示jqGrid 以及jqGrid的属性设置容易出现的问题
    ASP.NET MVC 中 CKeditor.js的正确引用
    关于有道词典的一个小错误
    ASP.NET MVC 标签绑定传值及后台获取并进行修改操作
    每天学点GDB 6
    每天学点GDB 9
  • 原文地址:https://www.cnblogs.com/Flyfishy/p/12163884.html
Copyright © 2011-2022 走看看