2017-02-08 2 views
0

Я создал эту функцию, чтобы вернуть ближайший штрих к й (равный или выше):Функция не возвращает значение (в большинстве случаев)

def primo(x): 
i=2 
prime=True 
if x>=0: 
    while i<=x**(1/2) and prime==True: 
     if x%i==0: 
      prime=False 
     else: 
      i+=1 
    if (prime==True or x==2 or x==3) and x>1: 
     return x 
    else: 
     primo(x+1) 

else: 
    primo(x+1) 

Но он возвращается только тогда, когда x уже первичен.

Я попытался поместить print(x) в ту же строку, что и для возврата, но если x не является простым (12, например), он только печатает номер в конце, он не возвращает значение.

Я бы хотел, чтобы код возвращал премьер в каждом случае, особенно если x не является простым (он будет обходить код до тех пор, пока x не станет простым).

Спасибо.

+0

им довольно уверен, что есть встроенные методы для Python, чтобы сделать это? – WhatsThePoint

ответ

5

Вы должны return значение вашего рекурсивного вызова функции

else: 
    return primo(x+1)