Для n-битного RSA вам нужно найти два простых числа, произведение которых является n-битным числом, то есть примерно n/2 бит каждое. На самом деле один немного меньше, а другой немного больше, потому что вы не хотите, чтобы простые числа располагались слишком близко друг к другу.
Примерно одно из ln M чисел вокруг M является простым числом; это натуральный логарифм. ln (2) близко к 0,7. Если M = 2^(n/2), то ln M ≈ 0,35n. Вы проверяете только нечетные целые числа, которые в два раза чаще являются простыми, с вероятностью 2/0,35n. Проверка 0,175n нечетных целых чисел находит простое число. Вам нужно два, так что около 0,35n.
Но обратите внимание, что многие из них имеют маленькие делители и могут быть идентифицированы очень быстро; например, с помощью сита, удаляющего числа с коэффициентами < 1000 или 10 000. Чтобы принять простое число, вы проведете тест Миллера-Рабина 50 или 100 раз, в то время как для 3/4 не простых чисел вы выполните его один раз, для 3/4 остальных — дважды и т. д. Дело в том, что проверка не простого числа на простоту обычно выполняется довольно быстро.Тестирование двух реальных простых чисел занимает много времени. Количество составных частей, которые вы проверяете на простоту, не имеет большого значения.
PS Я только что понял, что все переоценивают в 2 раза. Скажем, я решил, что мне нужно простое число около некоторого нечетного K, поэтому я проверяю K, K+2, K+4 и т. д., пока не наткнусь на простое число. Пусть p — наибольшее простое число, меньшее K, а q — первое простое число >= K. Количество неверных чисел для проверки — это не промежуток q-p, разделенный на 2 (поскольку мы проверяем только нечетные числа), а половина этого числа, поскольку K может быть где угодно в этом промежутке.
PPS Я только что понял, что с этим аргументом что-то не так…