Составить список для нахождения всех простых чисел из диапазона чисел? - PullRequest
0 голосов
/ 04 июня 2018
[x for x in range(1,100) if all(x%y for y in range(2,x))]

Не в состоянии понять, как приведенный выше код возвращает правильные результаты. Вместо этого должно быть

[x for x in range(1,100) if all(x%y!=0 for y in range(2,x))]

Причина в том, что все равно True, если только одно из условий равно True.

1 Ответ

0 голосов
/ 04 июня 2018

Нулевые целые числа считаются истинными в логическом контексте, поэтому фрагменты кода эквивалентны.

Обратите внимание, что этот алгоритм неправильно классифицирует 1 как простое число.

...