我如何使用while循环内的函数,直到我得到我想要的结果?


import random
u = int(input("Enter the security parameter"))
half = int(u/2)

def Prime_Check(n):
isprime = True
for i in range(2,int(n/2)):
if n % i == 0:
print("is not prime")
isprime = False
break
if isprime != False:
print("number is likely prime")
return n
while #p is not prime
p = (random.getrandbits(half))
Prime_Check(p)

我试图让我的while循环继续直到p是素数,但我不确定我将如何用我创建的函数做到这一点,我需要做一些像"return true"在我的函数中,然后"while function != true"?我很困惑如何实现这一点。提前感谢

有很多选项,但我会让你的函数返回一个布尔值,然后一旦值为True就跳出循环。同时,让while循环始终为True。

while True:
p = (random.getrandbits(half))
is_prime = Prime_Check(p)
if is_prime:
break

您希望从函数返回TrueFalse,具体取决于n是否是素数。然后,将其作为while循环的条件。

def Prime_Check(n):
isprime = True
for i in range(2,int(n/2)):
if n % i == 0:
print("is not prime")
return False
print("number is likely prime")
return True

,

more_loops = True
while more_loops:
p = (random.getrandbits(half))
more_loops = Prime_Check(p)

你做对了。您确实需要使您的函数检查一个数字是否为素数以返回bool(即TrueFalse):

import random
u = int(input("Enter the security parameter"))
half = int(u/2)
p = random.getrandbits(half)

def Prime_Check(n):
for i in range(2,int(n/2)):
if n % i == 0:
return False
return True

while not Prime_Check(p):
p = random.getrandbits(half)
print(f"Found a prime!: {p}")

您的Prime_check函数将返回None当数字不是素数(或数字本身,如果它是)。如果这个数是素数,它的True值将为True,如果不是,它将为False,这使得你的函数可用作条件。所以你唯一要做的改变就是用这个结果来控制循环。从一个非素数开始,使循环至少运行一次

p = 4 # (non-prime) 
while not Prime_Check(p)
p = (random.getrandbits(half))

我本来会用1作为初始非素数,但是你的函数认为1是素数

相关内容