 
maxal писал(а):
Для больших N лучше избрать другую стратегию: сначала находим m такое что 

Тут надо осторожнее. 

 может оказаться 

. Поэтому надо проверять еще и 

 (с соответственно меньшим количеством битов).
Кроме того, перебор можно уменьшить в два раза, если заметить, что первый и последний бит всегда 1. И, я не исключаю, что имеет смысл всегда сперва перебирать меньший диапазон — он задаст нижнюю границу, ниже которой не имеет смысла опускаться в большем диапазоне.
Кстати, мне неочевидно, достаточно ли опустить 

 на 

. Может статься, что 

 простое число, а вот среди 

 нет ни одного простого с 

 битом. Поэтому, получив некоторый результат, надо двигаться по 

 вниз, до тех пор, пока мы заведомо не попадем в меньшее количество бит…