bra*_*a90 2 python memory out-of-memory exponent python-3.x
if (2 ** (tester - 1)) % tester == 1: # Fermat's little theorem #
if prime_line.count(tester) == 0: #
prime_line.append(tester)
Run Code Online (Sandbox Code Playgroud)
我正在使用一个程序,该程序接受任何值或字符串或其组合的多个行输入,并返回该集中的任何当前素数。我正在使用费马定理来测试数字是否为质数,以最大程度地减少处理时间。在上述代码中,已经删除了字母的数字(例如194394788347)(开始输入将是1943jds9478cxbfhjvbfd8347)在进行指数计算时会产生内存错误。有什么办法解决这个问题?
2 ** 194394788347是一个天文数字,需要存储超过22 GB的空间。幸运的是,python包含一个在进行模数运算时求幂的函数:pow(base,exp,mod)。
if pow(2, tester - 1, tester) == 1:
Run Code Online (Sandbox Code Playgroud)
这也快得多,因为没有一个中间数比模数大得多。