Я пытаюсь найти эффективный способ вычисления Euler's totient function.Computing Eulers 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' не делает то, что вы думаете, что он делает - попробуйте. – orlp
использовать python3 вместо python2 :-) – 6502
Или положить 'из __future__ import division' в верхней части вашего кода, чтобы включить float-разделение в Python 2. –