题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    while (in.hasNextInt()) { // 注意 while 处理多个 case
      int n = in.nextInt(); //题目要求输入的数值
      int differ = n-1;  //定义两个素数的最大差值
      int index = 0;  //定义一个全局变量,用于记录满足最小差值的坐标

      List<Integer> list = new LinkedList<>();

      for(int i=2;i<n;++i){   //输入的数不可能是素数,因为输入的数一定是偶数。 从2开始,因为1不满足题意
        list.add(getCommonFactors(i));  //将每一个可能的素数装入其中;
      }

      Arrays.sort(new List[]{list});  //按获得的素数的大小排序
      Iterator<Integer> iterator = list.iterator();
      while (iterator.hasNext()){
        if(iterator.next().equals(0)){  //把没用的0去除掉
          iterator.remove();
        }
      }

      List<Integer> list1 = new LinkedList<>();  //用于保留两素数和为输入数的list
      for(int x=0;x<list.size();++x){
        for (int y=0;y<list.size();++y){
          while (list.get(x) + list.get(y) == n) {  //判断条件为两素数和为输入数
            list1.add(list.get(x)); list1.add(list.get(y));
            break;
          }
        }
      }
      System.out.println(list1);

      for(int j=0;j<list1.size();j=j+2){  //每两对两对之间进行比较,其实只需要比较一半;因为后一半都是负数。
        while (j<list1.size()-1){
          if(list1.get(j+1) - list1.get(j) < differ && list1.get(j+1) - list1.get(j) >=0){
            differ = list1.get(j+1) - list1.get(j);
            index =j;
          }
          break;
        }
      }
      System.out.println(list1.get(index));
      System.out.println(list1.get(index+1));
    }
  }

  public static int getCommonFactors( int a){  //判断是否为素数,并返回该素数值
    int b = 1; int c = -1;
    int t = a;  //保存最初传入的值
    int res = 0;
    ArrayList<Integer> integers = new ArrayList<>();  //存放要判断的素数的因数;
    for(int i=2;i<=a;++i){  //从2开始,因数的下标不是1的就是非素数
      while (a%i == 0){
        integers.add(i);
        break;
      }
    }
    if(integers.size()<2){ //从2开始,因数的下标不是1的就是非素数
      return t;
    }else {
      return 0;  
    }

  }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务