if (2 ** (tester - 1)) % tester == 1: # Fermat's little theorem #
if prime_line.count(tester) == 0: #
prime_line.append(tester)
我正在使用一个程序,它接受任何值或字符串或其组合的多行输入,并返回集合中的任何当前素数。我用费马定理来检验这个数是否是素数,以便最小化处理时间。在前面提到的代码中,诸如194394788347之类的数字已经从字母中去掉(开始输入将是1943jds9478cxbfhjvbfd8347),在进行指数计算时会产生内存错误。有办法解决这个问题吗?你知道吗
2 ** 194394788347
是一个天文数字,仅存储就需要超过22gb。幸运的是,python包含一个函数,可以在执行模数运算时进行指数运算:pow(base, exp, mod)。你知道吗这也要快得多,因为没有一个中间数比模大得多。你知道吗
相关问题 更多 >
编程相关推荐