MyFunctions文件文件 -
def factList(p,n1):
counter = 1
while counter <= n1:
if n1 % counter == 0:
p.append(counter)
counter = counter + 1
def isPrime(lst1,nbr):
factList(lst1, nbr)
if len(lst1) == 2:
return True
else:
return False
def nextPrime(nbr1):
cnt1 = 1
while cnt1 == 1:
nbr1 == nbr1 + 1
if isPrime(lst2,nbr1):
cnt1 = 0
Filetester文件 -
nbr1 = 13
nextPrime(nbr1)
print nbr1
我的isPrime函数已经可以正常工作了我的isPrime函数用于我的nextPrime函数,当我运行它时我得到了 “&GT;&GT;&GT; 13
“(使用13时)
“&gt;&gt;&gt;”(使用14时)
我应该得到17而不是13.如果我在功能测试器中将其更改为复合数字,它将返回无限循环。请仅使用简单的函数(我在代码中使用的函数)。
答案 0 :(得分:2)
这不是正确的方法,但这是我能够做的最接近的代码改编:
def list_factors_pythonic(number):
"""For a given number, return a list of factors."""
factors = []
for x in range(1, number + 1):
if number % x == 0:
factors.append(x)
return factors
def list_factors(number):
"""Alternate list_factors implementation."""
factors = []
counter = 1
while counter <= number:
if number % counter == 0:
factors.append(counter)
return factors
def is_prime(number):
"""Return true if the number is a prime, else false."""
return len(list_factors(number)) == 2
def next_prime(number):
"""Return the next prime."""
next_number = number + 1
while not is_prime(next_number):
next_number += 1
return next_number
答案 1 :(得分:1)
这会有所帮助:
def nextPrime(number):
for i in range(2,number):
if number%i == 0:
return False
sqr=i*i
if sqr>number:
break
return True
number = int(input("Enter the num: ")) + 1
while(True):
res=nextPrime(number)
if res:
print("The next number number is: ",number)
break
number += 1
答案 2 :(得分:0)
我不知道python,但如果它像C一样,那么你就不会为变量分配任何东西,只是测试相等性。
while cnt1 == 1:
nbr1 == nbr1 + 1
if isPrime(lst2,nbr1):
cnt1 == cnt1 + 1
应该成为
while cnt1 == 1:
nbr1 = nbr1 + 1 << changed here
if isPrime(lst2,nbr1):
cnt1 = cnt1 + 1 << and here
答案 3 :(得分:0)
此代码可以帮助您
n=int(input())
p=n+1
while(p>n):
c=0
for i in range(2,p):
if(p%i==0):
break
else:c+=1
if(c>=p-2):
print(p)
break
p+=1
答案 4 :(得分:-1)
此代码为查找给定数字的下一个素数而优化,大约需要6.750761032104492秒
def k(x):
return pow(2,x-1,x)==1
n=int(input())+1
while(1):
if k(n)==True:
print(n)
break
n=n+1