#java
#java
Вопрос:
Я написал программу, которая не работала для project Euler problem 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 amp;amp; number != i) {
return false;
}
}
return true;
}
}
Комментарии:
1. «Какое простое число, меньшее миллиона, может быть записано как сумма наиболее последовательных простых чисел?» — Где вы максимизируете общее количество простых чисел?. Кроме того, я не помню, чтобы project euler публиковал какие-либо ответы.
2. Еще один момент — есть более быстрые способы выяснить, является ли число простым (подсказка: решетка Эратосфена). Это соответствует вашему варианту использования, поскольку у вас уже есть
List
простые числа3. Сделанное вами утверждение о том, что результаты на 10 больше, чем вы ожидаете, неверно, причина вашего конкретного сценария с данными заключается в том, что вы не использовали скользящее окно.
4. Под максимизацией вы подразумеваете ограничение количества простых чисел, которые я добавляю в список? Я думал, что могут быть более простые способы поиска простых чисел, но я хотел посмотреть, работает ли мой метод.
5. Спасибо, что сообщили мне о скользящем окне, вы узнали об этом через формальное образование? Я поднялся так высоко, как только мог, в своей средней школе и не узнал ничего подобного.