2015-05-07 3 views
-5

имейте проблемы с записью программы, которая находит все простые числа на n-ом числе и печатает их. Вот что у меня есть до сих пор, если кто-то может помочь и объяснить, что им делать неправильно, это было бы оценено:Prime Numbers PYTHON:

def isPrime (n): 
    primeList = [2] 
    for i in range (3, n): 
     if n%2 == 0 or n%3 == 0: 
      break 
     else: 
      primeList.append(i) 
      break 
    return (primeList) 
+1

форматирования теряются в вашем комментарии. Пожалуйста, отредактируйте ваше сообщение и добавьте код из своего комментария, а затем удалите комментарий. – Will

+2

Вы посмотрели на любой из сотен других вопросов по поводу поиска простых чисел? Прокрутите вниз и посмотрите на правую сторону в разделе ** Related **. Эти вопросы также возникали, когда вы изначально составляли свой вопрос, но вы, по-видимому, игнорировали их, хотя вы можете найти ответы на них. – MattDMo

+0

Определение простого числа противоречит вашему коду. Вы добавляете числа, если они не делятся на 2 и не делятся на 3, но как насчет чисел вроде 5, 7 и т. Д.? Они также являются первичными и не делятся на 2 и 3. Кроме того, здесь нет причин ломаться. Разрыв завершает замкнутый контур. – Shashank

ответ

2

Вы должны проверить, если ваше число делится на все простые числа, которые вы добавили до сих пор вместо проверки если он делится на 2 и 3.

def isPrime (n): 
    primeList = [2] 
    for i in range (3, n): 
     isPrime = True 
     for prime in primeList: 
      if i % prime == 0: 
       isPrime = False 
       break 
     if isPrime: 
      primeList.append(i) 
    return primeList 
1

Да, вам нужно найти достаточный способ определить, является ли число простым. В его нынешнем виде вы проверяете, не делит ли число на 2 и 3, а не 5 или 7 или что-то большее. Вы можете проверить это с помощью цикла по номерам меньше, чем ваш текущий номер:

for i in range(3, n): 
     for j in range(2, i): 
      if i % j == 0: 
       break 
      primeList.append(i) # only runs if loop not broken 

    return primeList 

Я оставлю вас, чтобы оптимизировать его, если вы хотите

+0

Я добавлю оптимизацию, если OP их нуждается и борется, не хочешь отвлечься от этого! – Matthew

+0

@Matthew, если n% j == 0? действительно? – zubergu