Создал программу для поиска простых коэффициентов натурального числа, но я получаю сообщение об ошибке:
multipliers = []
a = 2
value = input("Put a natural number here: ")
value = int(value)
for i in range(1, value):
if value % i == 0:
multipliers.append(i)
for x in multipliers:
while a < x:
if x % a == 0:
multipliers.remove(x)
else:
a += 1
print(multipliers)
Все, что я хочу сделать, это: Получить входное значение, найти множители значения и составить список из них, взять множители 1 на 1 и попытаться разделить на [2, 3, 4, 5...] если a
является множителем x, удалите его из списка и получите другое значение из списка как x и сделайте то же самое.
Но когда я пытаюсь запустить это, я получаю сообщение об ошибке, которое говорит
ValueError: list.remove(x): x нет в списке
Я не знаю, где я делаю неправильно. Не могли бы вы мне помочь?
Поскольку x
удаляется из списка, тогда цикл while снова циклытся, и он пытается удалить x
из списка.
Чтобы исправить это, добавьте break
в цикле while так:
for x in multipliers:
while a < x:
if x % a == 0:
multipliers.remove(x)
break
else:
a += 1
Вы также можете заменить второй цикл цикла на понимание списка:
factors = [x for x in multipliers if all(x % a != 0 for a in range(2, x))]