大素数的生成
基于之前一篇素数的检测,原理是随机一个奇数,然后检测是否是素数。可以先用50以内或者100以内的素数先做验证,然后再用Miller-Rabin检测。 效率感觉还可以,1000位的素数检测10次生成要平均1秒时间。
def make_a_big_prime(n):
base_primes = imouren_primes3(50)
random_num = random.randrange(2**n+1, 2**(n+1)+1, 2)
while 1:
is_prime = True
for i in base_primes:
if random_num%i == 0:
is_prime = False
break
if is_prime:
is_prime = prime_test_miller_rabin(random_num, 10)
if is_prime:
break
random_num += 2
return random_num