Ошибка в цикле, выдает список с задублированными значениями

Где-то ошибка в цикле, выдает список с задублированными значениями.

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) # список составных чисел
→ Ссылка