Я пытаюсь передать список чисел в функцию простого числа.Я ожидаю, что он вернет элементы, которые являются простыми, и отбросит те, которые не являются.
Вот код:
def primality(num):
if num % 2 == 0 and num > 2:
return False
return all(num % i for i in range(3, int(math.sqrt(num)) + 1, 2))
Не работает, почему?
nums = [31, 71, 91, 32, 92, 13, 73, 14, 34, 74]
for i, s in enumerate(nums):
if not primality(nums[i]):
del nums[i]
print(nums) # it prints [31, 71, 32, 13, 73, 34] which is wrong, 32 and 34 shouldnt be there
Но это работает:
temp = []
for i, s in enumerate(nums):
if not primality(nums[i]):
continue
temp.append(s)
print(temp) # [31, 71, 13, 73] which is correct
Мой вопросочень простой, но я не могу понять, почему первый метод удаления элементов из существующего списка не удаляет все не простые числа?что я делаю не так?