大素数的生成
基于之前一篇素数的检测,原理是随机一个奇数,然后检测是否是素数。可以先用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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步