Я читаю книгу High-Performance Python из коллекции O'Reilly, на странице № 11 я нашел этот код, который работает для python 2, смысл в том, чтобы сделать одну инструкцию, которая выполняет векторизация) несколько одновременно
import math
def check_prime(number):
sqrt_number = math.sqrt(number)
number_float = float(number)
numbers = range(2, int(sqrt_number)+1)
for i in xrange(0, len(numbers), 5):
# the following line is not valid Python code
result = (number_float / numbers[i:(i+5)]).is_integer()
if any(result):
return False
return True
, но я получаю эту ошибку
TypeError: unsupported operand type(s) for /: 'float' and 'list'
Я пытался изменить ее для работы на python 3, вот моя попытка:
import math
def check_prime(number):
sqrt_number = math.sqrt(number)
number_float = float(number)
numbers = list(range(2, int(sqrt_number)+1))
for i in range(0, len(numbers), 5):
# the following line is not valid Python code
result = (number_float / numbers[i:(i+5)]).is_integer()
if any(result):
return False
return True
Я изменил xrange
для range
и range(2, int(sqrt_number)+1)
для list(range(2, int(sqrt_number)+1))
, но мне это не удалось. Я предполагаю, что есть специальный оператор для множеств или что-то подобное, но понятия не имею. если кто-нибудь из вас может мне помочь, я буду так благодарен вам