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

2024-06-23 18:53:54 发布

您现在位置:Python中文网/ 问答频道 /正文

if (2 ** (tester - 1)) % tester == 1:  # Fermat's little theorem      #
    if prime_line.count(tester) == 0:                                 #
        prime_line.append(tester)

我正在使用一个程序,它接受任何值或字符串或其组合的多行输入,并返回集合中的任何当前素数。我用费马定理来检验这个数是否是素数,以便最小化处理时间。在前面提到的代码中,诸如194394788347之类的数字已经从字母中去掉(开始输入将是1943jds9478cxbfhjvbfd8347),在进行指数计算时会产生内存错误。有办法解决这个问题吗?你知道吗


Tags: 字符串代码程序ifcountline时间prime
1条回答
网友
1楼 · 发布于 2024-06-23 18:53:54

2 ** 194394788347是一个天文数字,仅存储就需要超过22gb。幸运的是,python包含一个函数,可以在执行模数运算时进行指数运算:pow(base, exp, mod)。你知道吗

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

这也要快得多,因为没有一个中间数比模大得多。你知道吗

相关问题 更多 >

    热门问题