我正在做一个关于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)
目前没有回答
相关问题 更多 >
编程相关推荐