Вы можете сделать это быстрее:
- Начиная с наименьшего числа 10 di git (нет смысла проходить через группу кандидатов, которые никогда не будут совпадать, даже если они простые)
- Использование быстрого встроенного метода
is-prime
вместо алгоритма ручной прокрутки
Таким образом получается:
say (1_000_000_000..*).first(*.is-prime)
, который производит:
1000000007
Вы также можете отфильтровывать чётные записи, но я подозреваю, что is-prime
отклоняет их так же быстро, как вы бы отдельно их проверяли. (Кроме того, оказывается, что число настолько близко к первому 10-ди git числу, что на практике ничего, кроме заявления в 1_000_000_000
, не имеет значения.)