Простые числа вида k * 2 n +1
Сначала определим функцию, которая по заданному номеру п простого числа q находит t – решение сравнения 3*2n +1^0 (mod q) и 5 – показатель 2 по модулю q, если такое решение существует.
f3[n_] :=Block[(q= Prime[n], s=MultiplicativeOrder[2,q], t=MultiplicativeOrder[2,q,{-PowerMod[3, -1,q]}]}, If[NumberQ[t],fs,t}]]Теперь с помощью этой функции можно сгенерировать таблицу остатков и соответствующих им модулей.

Чтобы в таблице сначала шли меньшие модули s (они помогают отбраковать больше кандидатов), таблицу пришлось отсортировать, предварительно вычеркнув из нее элементы NULL, которые соответствуют тем простым модулям д, для которых сравнение 3*2n +1 = 0 (mod q) неразрешимо.
Каждая пара в этой таблице описывает арифметическую профессию из показателей, для которых выполняется некоторое тождественное сравнение. Пусть, например, в таблице имеется пара (s, t). Она была получена для некоторого простого числа q. Ее наличие в таблице означает, что 3*2n+1 +1 = 0 (mod q) для любых натуральных k.
Теперь давайте предварительно оценим количество чисел, которые может помочь отбраковать такая таблица. Для этого сначала составим программу, которая подсчитывает количество чисел, отбракованных с помощью таблицы. Для этой программы нам понадобится функция, отбраковывающая заданное число по заданной таблице. Вот код этой функции.
fx[n_,t_] :=Block[{1= Length[t],i=1,c=(i<=1) }, While[c, {s,r}=t[[i]]; answer= (Mod [M, s]!=r); i++; c=(i<=1)S&answer]; answer]Эта функция принимает значение True, если число я не было отсеяно с помощью таблицы t, т.е. если оно подлежит дальнейшему испытанию. Теперь можем составить программу подсчета отбракованных чисел.
prog :=Block[{nn=100000,Yes=0,No=0,j=1}, While[j]=nn, If[fx[j,t],Yes++,No++]; J++1; Print["Yes=",Yes,"; No=",No]]Заметьте, что программа отличается от аналогичной программы для чисел вида 5*2n + 1. Отличие связано с тем, что на этот раз перебор не ограничивается только нечетными показателями. Конечно, как и для чисел вида 5-2n + 1, количество отбракованных чисел и время отбраковки зависят от размера таблицы t. Сначала давайте сгенерируем совсем небольшую таблицу.
t=Sort[DeleteCases[Array[f3.10.3],Null]] {{3.1},{4.3},{10.7},{12.2],{18.14],{28.9),{36.28}}Теперь запускаем программу.
prog //Timing  Yes= 33650; No= 66350{4.937 Second, Null}