[x for x in range(2, 20) if all(x % y != 0 for y in range(2, x))]
Сначала давайте оценим, что окружает all()
:
x % y != 0 for y in range(2, x)
x % y
получает остаток
!= 0
не равно 0
for y in range(2, x)
для y в диапазоне от 2 до x
Итак, all()
проверяет все эти условия для True
и, если это так, оценивается как True
. Это то, что проверяет Prime, так как это основные условия, что все числа при делении вашего текущего числа на другие не имеют остатка 0, что означает, что оно будет делимым и, следовательно, не простым.