#python #python-3.x #list #foreach
#python #python-3.x #Список #foreach
Вопрос:
Я тренируюсь со списками, я составляю список чисел, а затем добавляю только простые числа из этого списка в другой, и все в порядке, пока я не дойду до той части кода, где я хочу подтвердить, что число простое, я не делаю, если чего-то не хватает, вотэто мой код:
List = []
Primes = []
x = 0
for i in range(0,6):
List.append(int(input()))
flag = False
for e in List:
print(e)
for div in range(2,e):
if e%div == 0:
flag = True
if flag == False:
Primes.append(e)
print(List)
print(Primes)
И я получаю этот вывод:
[1, 42, 5, 8, 7, 56, 2, 34]
[]
Комментарии:
1. Вы должны сбросить значение
flag
внутри первогоfor
цикла. Также обратите внимание, что 1 не является простым (ваш код будет думать, что это так).2. Спасибо за ответ и рекомендации, очень ценю это
Ответ №1:
кажется, это работает:
List = []
Primes = []
x = 0
for i in range(0,6):
List.append(int(input()))
for e in List:
flag = False
#print(e)
if e == 1:
print("1 is neither prime nor composite")
else:
for div in range(2,e):
if e%div == 0:
flag = True
if flag == False:
Primes.append(e)
print(List)
print(Primes)
проблема заключалась в том, что он не устанавливался flag
False
после каждого теста
также обратите внимание, что большинство людей считают 1 не простым и не составным, поэтому я добавил это и туда
Ответ №2:
это даст вам ваши простые числа из списка:
from math import sqrt
from itertools import count, islice
l = range(6)
def is_prime(n):
return n > 1 and all(n % i for i in islice(count(2), int(sqrt(n)-1)))
primes = [i for i in l if is_prime(i)]