Это мой способ np
:
def is_prime(x):
if x < 4:
return True
if all([(x > 2), (x % 2 == 0)]):
return False
else:
return np.array([*map(lambda y: ((x % y) == 0).sum(), np.arange(1, x + 1))]).sum() == 2
Вот производительность:
%timeit is_prime(2)
%timeit is_prime(int(1e3))
%timeit is_prime(5003)
10000 loops, best of 3: 31.1 µs per loop
10000 loops, best of 3: 33 µs per loop
10 loops, best of 3: 74.2 ms per loop
Я добавил отдельную таблицу над представлением списка, в которой перечислены все столбцы. Это решило мою проблему. Просто данные не выравниваются должным образом по столбцам. Я подумаю об этом позже