Извините за беспокойство, но erat2 () имеет серьезный недостаток в алгоритме.
При поиске следующего композита нам нужно проверить только нечетные числа. q, p оба нечетны; то q + p четно и не нуждается в проверке, но q + 2 * p всегда нечетно. Это исключает проверку «если даже» в условиях цикла while и экономит около 30% времени выполнения.
Пока мы находимся в этом: вместо элегантного «D.pop (q, None)», get и delete использовать метод ', если q в D: p = D [q], del D [q]', что вдвое быстрее! По крайней мере, на моей машине (P3-1Ghz). Поэтому я предлагаю эту реализацию этого умного алгоритма:
def erat3( ):
from itertools import islice, count
# q is the running integer that's checked for primeness.
# yield 2 and no other even number thereafter
yield 2
D = {}
# no need to mark D[4] as we will test odd numbers only
for q in islice(count(3),0,None,2):
if q in D: # is composite
p = D[q]
del D[q]
# q is composite. p=D[q] is the first prime that
# divides it. Since we've reached q, we no longer
# need it in the map, but we'll mark the next
# multiple of its witnesses to prepare for larger
# numbers.
x = q + p+p # next odd(!) multiple
while x in D: # skip composites
x += p+p
D[x] = p
else: # is prime
# q is a new prime.
# Yield it and mark its first multiple that isn't
# already marked in previous iterations.
D[q*q] = q
yield q
Поведение, которое вы описали, является ожидаемым.
Помните, что ваш супер-POM наследуется от Maven POM по умолчанию и почти любого плагина, который вы определяете в своем pom эффективно переопределяет настройку в POM по умолчанию. Например, чтобы включить фильтрацию ресурса по умолчанию, вы должны указать путь в вашем POM. Вы делаете это:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
Не это:
<resources>
<resource>
<filtering>true</filtering>
</resource>
</resources>
Каталог по умолчанию не всплывает для вас, даже если вы указали его там. Возможно, это сделает специальный MOJO, но я не смог его найти.
См. Страницу использования плагина build-helper-maven-plugin.