Python: для проверки на простое и приращение

у меня есть ровно 5 дней практики, час ежедневно, поэтому любезно простите, если мои вопросы очень низкого уровня. Без предварительного кодирования exp

Моя цель кода ниже
1-проверьте, является ли введенный номер простым
2-если не печатать следующий самый большой Прайм

def primetest (num):       # check if number is a prime
    for c in range (2, num):
     if num % c == 0:
      repeattest (num)     #not prime? increment number
     else :
      print (num,"is a prime number")
      break       

def repeattest (num):     # check prime if not increment number by 1      
 for z in range (2, num):
   num = num+1
   primetest (num)
   if num % z == 0:
      num = num+1
   else:
      print ("Next Prime:", num+1)
      break

num = int (input ("enter a number:"))     # main code: 
for y in range (2, num):
  if num % y == 0:
        repeattest (num)
  else:
      print (num,"is a prime number")
      break

Я думаю, что логика в порядке, но не уверен, почему я не получаю выход. Пожалуйста помочь

1 ответ

  1. Способ, которым вы сделали, имеет много ошибок, не эффективных. Сделав некоторые изменения в вашем коде, я значительно упростил его. Читайте комментарии, чтобы понять:

    def primetest (num):       # check if number is a prime
        return(all(num % i for i in range(2, num)))
    
    num = int (input ("enter a number:"))     # main code:
    
    while True: #loop continues until prime number found(True)
        if primetest(num):
            print(num,"is a prime number.")
            break #(stops loop if prime found)
        else: #otherwise repeat by incrementing to the next num until found
            print(num,"is not a prime number.")
            num += 1
    

    Выход:

    enter a number:45
    45 is not a prime number.
    46 is not a prime number.
    47 is a prime number.