В питоне не знаю, я испытывал код PARI/GP:
Код:
? p=primes([3,10^6]);for(n=3,2000,x=n^(n+1)+n+1;for(i=1,#p,if(x%p[i]==0,next(2)));if(ispseudoprime(x),print(n)))
? ##
*** last result computed in 1min, 24,835 ms.
Как видно тут
вычисляется всегда (и занимает лишь 9с суммарно с проверкой на простые). Вся программа при этом выполняется полторы минуты вместо пяти с половиной.
(Статистика делителей)
Ради интереса даже проверил сколько чисел проходят дальше на проверку, а сколько отсеиваются делением на простые до миллиона:
666,134,87,82,43,47,27 штук делятся на простые 3,5,7,11,13,17,19;
1312 делятся на простые до 100;
1602 на простые до тысячи;
1796 на простые до 10 тысяч;
1832 на простые до 100 тысяч;
1849 на простые до миллиона;
149 прошли дальше в isprime.
При этом пропуск делящихся на простые до 100 вычисления вообще не ускоряет (те же 5.5 минут), хотя количество проверок на простоту уменьшается аж втрое. Т.е. основные тормоза таки в проверке на простоту огромных чисел. Разумно проверять на простые только до 100 тысяч, это увеличивает время лишь на 2 секунды, с 1:25 до 1:27.