优化循环中与Carmichael函数相关的代码

2024-09-22 16:39:26 发布

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

我正在做一个关于Carmichael function的项目。我为Carmichael函数生成输出的方法工作得很好,但我将在循环中使用此函数,并用于非常大的输入。我是否应该分离coprimes列表并追加n的每个新值,并在追加时检查gcd(x,n)=1。我想快速生成Carmichael函数的输出。我的总体目标是找出素数计数函数和卡迈克尔函数的输出何时重合。我试过谷歌合作,但内存一直崩溃

如何优化下面的代码?我希望使用非常大的n值(如下所示)

from sympy import primepi
from math import gcd

def carmichael(n):
    coprimes = [x for x in range(1, n) if gcd(x, n) == 1]
    k = 1
    while not all(pow(x, k, n) == 1 for x in coprimes):
        k += 1
    return k

for n in range(10**18, 10**19):
    if primepi(n) == carmichael(n):
        print(n)

Tags: 项目方法函数infromimportforif