2014-02-09 3 views
0

Я работаю над назначением в начале Python, вызывающим список простых чисел менее 100 с использованием набора понятий. Я могу генерировать не являющиеся простые числа, используяPython, генерирующий простые числа, используя Set Comprehension

nonPrime = { x for x in range(2, 100) for y in range(2, x) if x % y == 0 } 

Это эффективно возвращает все не простые числа, но я не могу найти другой путь, чем бессистемный Или этот набор с набором всех чисел от 2 до 100, чтобы получить множество простого номера. Есть ли способ, которым я могу получить противоположность этого набора в рамках одного и того же набора понятий?

+0

Что такое 'o' и' Y'? Или это означало «x% y == 0»? –

ответ

4

Это не самый эффективный алгоритм, но для его реализации:

prime = {x for x in range(2, 100) if all(x % y != 0 for y in range(2, x))} 

Или, что то же самое:

prime = {x for x in range(2, 100) if not any(x % y == 0 for y in range(2, x))} 

По одной простой изысканности, вы можете остановить проверку возможных факторов как только вы ve прошел квадратный корень от x:

prime = {x for x in range(2, 100) if all(x % y != 0 for y in range(2, int(math.floor(math.sqrt(x))) + 1))} 
Смежные вопросы