Вы не генерируете простые числа точно. Вы генерируете большое нечетное число случайным образом, затем проверяете, является ли это число простым, если не генерирует другое случайное число. Есть некоторые законы простых чисел, которые в основном утверждают, что ваши шансы «попасть» в простое число случайными попытками составляют (2 / ln n)
Например, если вы хотите 512-битное случайное простое число, вы найдете его в 2 / (512 * ln (2))
Таким образом, примерно 1 из каждых 177 чисел, которые вы попробуете, будет простым.
Есть несколько способов проверить, является ли число простым, один хороший - это "тест Миллера-Рабина" , как указано в другом ответе на этот вопрос .
Также в OpenSSL есть хорошая утилита для тестирования простых чисел:
$ openssl prime 119054759245460753
1A6F7AC39A53511 is not prime