我有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
我认为逻辑很好,但不确定为什么我没有得到输出。请帮忙
答案 0 :(得分:0)
你做的方式有很多错误效率不高。通过对您的代码进行一些修改,我使它变得更加简单。阅读评论以了解:
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.