任何人都可以告诉我一种计算超级巨大数素数的有效方法(最好是几秒钟)的一种方法。请注意,我尝试了不同的方法,而那些方法使用的数量相对较少,但是我正在寻找可以跟随大量应用的pyhon实现。
125374680954652661386934591732590346832000904083650535473852777526009092697216823605554956668612576763032418271586635306801222800089166259634620674389187053397764218557407954550086361289944721657005437808328796396856557354427622148670391925618835060162683586963099301421042735717577511636526445970637133494689
答案 0 :(得分:0)
我不知道它的效率如何,但这是一种算法-当您被要求写一些东西来获取数字的主要因素时,您在求职面试中想到的一种算法:
def get_primes():
""" Infinitely generates prime numbers"""
list_of_primes = [2]
yield 2
cur = 3
while True:
if all(cur % prime for prime in list_of_primes):
list_of_primes.append(cur)
yield cur
cur += 2
def prime_factors(num):
""" generator to produce prime factors, from lowest to highest, of num """
primes = iter(get_primes())
factor = 2
while num > 1:
while num % factor == 0:
num /= factor
yield factor
factor = next(primes)
very_large_number = 125374680954652661386934591732590346832000904083650535473852777526009092697216823605554956668612576763032418271586635306801222800089166259634620674389187053397764218557407954550086361289944721657005437808328796396856557354427622148670391925618835060162683586963099301421042735717577511636526445970637133494689
factors_of_very_large_number = list(prime_factors(vln))
如果您在速度特别快的计算机上进行设置并将其放行几年,它最终可能会打印出一些东西。
“找到被乘以产生更大的两个非常大的质数”是密码学中一个尚未解决的巨大问题。如果解决了这个问题(量子计算机朝着他们可能的方向移动),那么很多加密技术将被打破,并且该领域目前正试图将自己定位为不会发生这种情况的方向。