gpt4 book ai didi

python - 计算欧拉的 Totient 函数

转载 作者:太空狗 更新时间:2023-10-29 19:30:47 26 4
gpt4 key购买 nike

我正试图找到一种有效的方法来计算 Euler's totient function .

这段代码有什么问题?它似乎不起作用。

def isPrime(a):
return not ( a < 2 or any(a % i == 0 for i in range(2, int(a ** 0.5) + 1)))

def phi(n):
y = 1
for i in range(2,n+1):
if isPrime(i) is True and n % i == 0 is True:
y = y * (1 - 1/i)
else:
continue
return int(y)

最佳答案

根据维基百科上的描述,这里有一个更快的工作方式:

Thus if n is a positive integer, then φ(n) is the number of integers k in the range 1 ≤ k ≤ n for which gcd(n, k) = 1.

我并不是说这是最快或最干净的,但它确实有效。

from math import gcd

def phi(n):
amount = 0
for k in range(1, n + 1):
if gcd(n, k) == 1:
amount += 1
return amount

关于python - 计算欧拉的 Totient 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18114138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com