Python 我的质数查找程序陷入无限循环
我为我的班级做了一个节目有一段时间了。它应该是一个素数查找器,其中def is_prime(num)函数循环并不断要求用户输入更多的数字,检查它们是否为素数,并打印它们是否为素数。如果输入负数,则应退出Python 我的质数查找程序陷入无限循环,python,Python,我为我的班级做了一个节目有一段时间了。它应该是一个素数查找器,其中def is_prime(num)函数循环并不断要求用户输入更多的数字,检查它们是否为素数,并打印它们是否为素数。如果输入负数,则应退出 def is_prime (num): while num >= 0: if num % 1 == num or num % num == 0: print(num, "is a prime") elif num % 2 == 0: print(
def is_prime (num):
while num >= 0:
if num % 1 == num or num % num == 0:
print(num, "is a prime")
elif num % 2 == 0:
print(num, "is not a prime")
continue
elif num < 0:
print("Done. Thanks for using the program!")
break
return 0
if __name__ == "__main__":
print("This program checks if a given number is a prime number\n")
num1 = int(input("Please enter a positive number (or a negative number to exit):\n"))
is_prime(num1)
def为素数(num):
当num>=0时:
如果num%1==num或num%num==0:
打印(num,“是素数”)
elif num%2==0:
打印(num,“不是素数”)
持续
elif num<0:
打印(“完成。感谢您使用该程序!”)
打破
返回0
如果名称=“\uuuuu main\uuuuuuuu”:
打印(“此程序检查给定的数字是否为素数\n”)
num1=int(输入(“请输入一个正数(或一个负数以退出):\n”))
is_素数(num1)
然而,它只有部分权利。它读取并确定素数…但它不是循环回到函数开头,而是无休止地打印它是否是素数的语句。我很确定这是我把while循环放在哪里的问题,但我不完全确定如何解决这个问题。
如果有任何帮助,我们将不胜感激。您还没有描述您想要的算法;从你的代码中根本不清楚。您的第一个
if
检查输入数字是可被1整除还是可被自身整除。。。它们都是代数重言式
然后,只要输入仍然为正,就重复此操作。由于从不更改
num
的值,因此这是一个非常直接的无限循环。在if阶梯中,无法使用不同的if测试每个候选因子的可除性
你需要把你在列表中找到的每一个素数都隐藏起来
例如:
搜刮它的想法,但不要逐字复制。顺便说一句,使用math.sqrt()可以大大加快速度
HTH
num
永远不会更改。请解决此条件:num%num==0
对每个数字都满意算法看起来很奇怪。它现在显然不起作用,但它似乎应该检查一个数字是否可以被2整除。但是一个数字a
可以被小于或等于sqrt(a)
的任何数字整除,这就是您应该检查的内容。继续是无用的。如果函数在python中找到一个素数,它应该返回True
def sieve_primes(stop=100000):
"""Yield primes below stop."""
primes = [2]
for candidate in range(3, stop + 1, 2):
if not any(candidate % prime == 0 for prime in primes):
primes.append(candidate)
yield candidate
for prime in sieve_primes():
print(prime)