• 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 }

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

    看似不起波澜的日复一日 会突然在某一天 让你看到坚持的意义 ​​​​
  • 相关阅读:
    jeecg 笔记之 自定义显示按钮 (exp 属性)
    jeecg 笔记之 自定义word 模板导出(一)
    jeecg 默认为空的字段值是如何被填充的?
    算法题——立方体的体对角线穿过多少个正方体?
    借用Snippet插件美化博客中的代码
    用PS设计等高线效果的背景图片
    算法题——投篮比赛获胜概率问题
    计算机中的颜色XIV——快速变换颜色的V分量
    算法实践——Twitter算法面试题(积水问题)的线性时间解法
    UI设计实战篇——利用Bootstrap框架制作查询页面的界面
  • 原文地址:https://www.cnblogs.com/Flyfishy/p/12163884.html
Copyright © 2020-2023  润新知