大素数的生成

大素数的生成

基于之前一篇素数的检测,原理是随机一个奇数,然后检测是否是素数。可以先用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
原文地址:https://www.cnblogs.com/imouren/p/2863125.html