2015-05-11 2 views
0

Я знаю, что на этот вопрос был дан ответ в различных формах. Однако я пытаюсь заставить это работать так, как я его пишу, поэтому я могу понять, что я делаю неправильно, когда занимаюсь вопросом программирования. Im пытается сделать функцию, которая печатает/возвращает все простые числа в диапазоне. Однако программа, которую я написал, ничего не печатала. Я пробовал делать блок-схемы и прокомментировал все. Это имеет смысл для меня, но не работает. Любые советы приветствуются!Python Prime number wont return

def isPrime (n):      ## we define a function 
    primeList = [2, 3]     ## 2 is the only even prime number 
    i = 4 
    while 3<i<n:      # i is assigned to numbers 3 to n 
     if i%2 == 1:     # if odd do the following 
      if i%3 != 0:    
       primeList.append(i) # add to prime list 
      else: 
       i%2 == False 
     else: 
      i = i + 1     # since i%2 == 0 we restart loop 
    return primeList 
+0

Защиту IsPrime (п): ## мы определим функцию primeList = [2, 3] ## 2 является единственным даже простое число я = 4 в то время как 3 <г <п: # я назначен на номера 3 до n , если i% 2 == 1: #, если нечетные, делают следующие , если i% 3! = 0: #, если i не имеет остатка, равного 0, это просто primeList.append (i) # add to премьер список еще: я% 2 == Ложные еще: я = я + 1 #, так как я% 2 == 0 мы перезапустить цикл возврата primeList –

+1

неясно, какой алгоритм вы реализуете здесь. Кажется, вы считаете число «простым», если оно делится ни на 2, ни на 3. Как насчет числа 25? Кроме того, утверждение 'i% 2 == False' ничего не делает (и неясно, что вы намерены делать). Наконец, вы не увеличиваете 'i' в случае, когда он нечетный. –

ответ

1

Вы пропустили довольно существенный i += 1 если i % 2 == 1.

Попробуй так:

def isPrime (n):      ## we define a function 
    primeList = [2, 3]     ## 2 is the only even prime number 
    i = 4 
    while 3<i<n:      # i is assigned to numbers 3 to n 
     if i%2 == 1:     # if odd do the following 
      if i%3 != 0:    
       primeList.append(i) # add to prime list 
      else: 
       i%2 == False 

     i = i + 1     # since i%2 == 0 we restart loop 
    return primeList 

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

+0

Эй, спасибо за это, это помогло мне заставить функцию работать. Теперь я понимаю, почему он не генерирует список простых чисел. –

0

Функция должна сделать только одну вещь, поэтому я хотел бы сделать 2 функции:

  • def get_primes_in_range(start, stop):
  • def is_prime(number):

Имя функции должно сказать вам точно, что она делает. В вашем коде функция называется неправильной. Он называется isPrime, но он не проверяет, является ли число простым, оно возвращает список простых чисел.

Наши функции должны выглядеть следующим образом:

def get_primes_in_range(start, stop): 
    list_of_primes = [] 
    for i in xrange(start, stop): 
    if is_prime(i): 
     list_of_primes.append(i) 
    return list_of_primes 

def is_prime(number): 
    for index in range(1, number): 
    if number % index == 0 and index != 1: 
     return False 
    return True 

Это не очень быстро, но это делает его работу.