首页 > 解决方案 > Project Euler 连续素数 Java

问题描述

我写了一个程序,它不适用于项目 Euler 问题 50,所以如果你还没有解决这个问题,如果你想解决它,可能就别看了。

问题链接在这里:https ://projecteuler.net/problem=50

剧透在下面回答

我的答案是 997661,比真正的解决方案多了十个

我的程序似乎对我有用,但我缺乏经验,希望更有经验的程序员能找出问题所在。

import java.util.ArrayList;

public class ConsecutivePrimeSum {

  public static void main(String[] args) {
      ArrayList<Integer> primes = new ArrayList<Integer>();
      for (int i = 2; i < 1000000; i++) {
          if (isPrime(i)) {
              primes.add(i);
          }
      }
      int total = 0;
      int counter = 0;


      while (total + primes.get(counter) < 1000000) {
          total += primes.get(counter);
          System.out.println(primes.get(counter));
          counter += 1;
      }
      System.out.println(total + " " + counter);
  }

  public static boolean isPrime(Integer number) {
      int sqrt = (int) Math.sqrt(number) + 1;
      for (int i = 2; i < sqrt; i++) {
          if (number % i == 0 && number != i) {
              return false;
          }
      }
      return true;
  }
}

标签: java

解决方案


推荐阅读