计算超大数素数的有效方法

时间:2019-07-16 21:21:53

标签: python cryptography

任何人都可以告诉我一种计算超级巨大数素数的有效方法(最好是几秒钟)的一种方法。请注意,我尝试了不同的方法,而那些方法使用的数量相对较少,但是我正在寻找可以跟随大量应用的pyhon实现。

125374680954652661386934591732590346832000904083650535473852777526009092697216823605554956668612576763032418271586635306801222800089166259634620674389187053397764218557407954550086361289944721657005437808328796396856557354427622148670391925618835060162683586963099301421042735717577511636526445970637133494689

1 个答案:

答案 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))

如果您在速度特别快的计算机上进行设置并将其放行几年,它最终可能会打印出一些东西。

“找到被乘以产生更大的两个非常大的质数”是密码学中一个尚未解决的巨大问题。如果解决了这个问题(量子计算机朝着他们可能的方向移动),那么很多加密技术将被打破,并且该领域目前正试图将自己定位为不会发生这种情况的方向。