Ошибка в цикле, выдает список с задублированными значениями
Где-то ошибка в цикле, выдает список с задублированными значениями.
N=int(input("вводим число натурального ряда ")) #вводим целое число
print(N)
list=[num for num in range(2,N)] #создаем список
print(list)
count=0
comp_list=[]
for num1 in list:
for num2 in range(2,num1+1):
if num1%num2==0: #если число делится без остатка
count=count+1 #более 2-х раз, то составное и доб-м в список его
if count>=2:
comp_list.append(num1)
else:
break
print(comp_list) # список составных чисел
Ответы (2 шт):
Автор решения: Insider
→ Ссылка
Я бы сделал как-то так..
N=int(input("вводим число натурального ряда ")) #вводим целое число
print(N)
list=[num for num in range(2,N)] #создаем список
print(list)
comp_list=[]
for num2 in range(2,len(list)+1):
if(num2 % 2 == 0):
comp_list.append(num2)
print(comp_list) # список составных чисел
Автор решения: Vektor Valentine
→ Ссылка
На примере Вашего же кода. Проверку делаем до квадратного корня из числа.
N=int(input("вводим число натурального ряда ")) #вводим целое число
print(N)
list_of_nums=[num for num in range(2,N)] #создаем список чисел
print(list_of_nums)
comp_list=[] #Заводим пустой список для составных
for num1 in list_of_nums: #Проверяем каждое число списка list_of_nums
for num2 in range(2, int(num1**0.5)+1): #Проверяем делители до квадратного корня
if (num1%num2 == 0): #если число делится без остатка
copm_list.append(num1) #Добавляем его в список составных
break #Следующее число
print(comp_list) # список составных чисел