Поиск простых чисел с помощью списков в Python 3.3.2

#python #list #numbers #compare #primes

#python #Список #числа #Сравнить #простые числа

Вопрос:

Я пытаюсь создать программу, которая находит простые числа, используя списки в Python 3.3.2. Что я пытаюсь сделать, это взять ОДИН элемент из ns и разделить его на ВСЕ элементы из b .

Это то, что у меня есть (не работает):

 b = [1]
ns = [1]

while 1 == 1:
    if ns[-1] / b[:] == 1 or ns[-1]:
        print (ns[-1])
        ns.append(ns[-1] 1)
        b.append(b[-1] 1)
    else:
        print ("No prime found.")
  

И это ошибка, которую я получаю:

 if ns[-1] / b[:] == 1 or ns[-1]:
TypeError: unsupported operand type(s) for /: 'int' and 'list'
  

Я понимаю, почему эта операция невозможна (деление целого элемента из списка на другой полный список просто не работает), и мне было интересно, есть ли какой-либо способ достичь моей цели.

Спасибо за любую помощь.

Комментарии:

1. вы продвинулись дальше, помог ли мой ответ?

2. Не совсем. Я не очень разбираюсь в Python (или любом другом языке программирования). Тем не менее, спасибо за помощь.

Ответ №1:

Вы не можете разделить целое число и список. Что вы могли бы сделать, так это использовать понимание списка. ДЕМОНСТРАЦИЯ:

 >>> ns = [1,2,3]
>>> b= [7,9,12,13]
>>> # divide last element of ns by all elements of b
... 
>>> [float(ns[-1])/item for item in b if item]
[0.42857142857142855, 0.3333333333333333, 0.25, 0.23076923076923078]
  

Первый элемент нового списка равен 3/7, второй элемент равен 3/9 и так далее. if item Проверка существует для того, чтобы убедиться, что вы не делите на ноль.

редактировать: на самом деле вы могли бы иметь в виду что-то другое, то есть деление одного элемента из ns на каждый элемент из b последовательно. Демонстрация для ns[-1] :

 >>> ns = [1,2,3]
>>> b = [1,2,3]
>>> sol = ns[-1]
>>> for item in b:
...     sol = float(sol)/item
... 
>>> sol
0.5
  

sol равно ((3/3)/2)/1

Кроме того, ваш while цикл никогда не закончится. Вы уверены, что хотите этого?