【发布时间】:2013-08-07 21:27:33
【问题描述】:
我正在尝试找到一种有效的方法来计算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)
【问题讨论】:
-
1/i并没有像您认为的那样做 - 试试吧。 -
使用 python3 代替 python2 :-)
-
或将
from __future__ import division放在代码顶部以在 Python 2 中启用浮点除法。 -
欧拉计划吧?我会事先编译一个素数列表,或者至少缓存你找到的素数。
标签: python