我的质数程序中的一个指数抛出内存错误,如何解决这个问题?

问题描述 投票:1回答:1
if (2 ** (tester - 1)) % tester == 1:  # Fermat's little theorem      #
    if prime_line.count(tester) == 0:                                 #
        prime_line.append(tester)

我正在使用一个程序,该程序接受任意值或字符串或其组合的多个行输入,并返回该集中的任何当前素数。我正在使用费马定理来测试数字是否为质数,以最大程度地减少处理时间。在上述代码中,已经去除了字母的数字(例如194394788347)(开始输入将是1943jds9478cxbfhjvbfd8347)在进行指数计算时会产生内存错误。有什么办法可以解决这个问题?

python python-3.x memory out-of-memory exponent
1个回答
2
投票

2 ** 194394788347是天文数字。幸运的是,python包含一个在执行模数时求幂的函数:pow(base, exp, mod)

if pow(2, tester - 1, tester) == 1:

这也快得多,因为中间数都不比模数大。

© www.soinside.com 2019 - 2024. All rights reserved.