Подлинное сито Эратосфена - алгоритм, используемый для генерации простых чисел

ArrayIndexOutOfBoundsException означает, что вы пытаетесь получить доступ к индексу массива, который не существует или не связан с границей этого массива. Индексы массива начинаются с 0 и заканчиваются на длину - 1.

В вашем случае

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n'); // i goes from 0 to length, Not correct
}

ArrayIndexOutOfBoundsException происходит, когда вы пытаетесь получить доступ к элементу index.length, который делает не существует (индекс массива заканчивается на -1). просто заменяя & lt; = с & lt; решит эту проблему.

for(int i = 0; i < name.length; i++) {
    System.out.print(name[i] +'\n');  // i goes from 0 to length - 1, Correct
}
14
задан APC 8 February 2010 в 12:30
поделиться

1 ответ

В документе говорится об используемой приоритетной очереди:

Учитывая эти потребности, приоритетная очередь является привлекательным выбором , тем более что эта структура данных изначально поддерживает несколько элементов с одинаковым приоритетом (удаление из очереди в произвольном порядке).

Поскольку повторяющиеся записи не очень полезны в алгоритме, их нужно обрабатывать специально.

Функция adjust , которая удаляет минимальный составной элемент, продолжает корректировать приоритетную очередь до тех пор, пока не будет уверенно, что все дубликаты минимального элемента удалены:

adjust table
    | n <= x = adjust (PQ.deleteMinAndInsert n_ ns table)
    | otherwise = table
    where ...

Если текущий первый элемент ( n ) было достаточно маленьким, чтобы его можно было удалить, а затем снова вызовите функцию adjust, чтобы также проверить следующий элемент в оставшейся очереди. Только когда не осталось мелких элементов, он перестает повторяться.

6
ответ дан 1 December 2019 в 16:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: