我一直在尝试编写一个程序,它将接受一个输入的数字,并检查它是否是一个质数。如果这个数实际上是一个素数,那么到目前为止我所做的代码是完美的。如果这个数不是质数,那就很奇怪。我想知道是否有人能告诉我代码的问题。
a=2
num=13
while num > a :
if num%a==0 & a!=num:
print('not prime')
a=a+1
else:
print('prime')
a=(num)+1
输入24时给出的结果是: 不是质数 不是质数 不是质数 质数
我该如何修复在每一个奇数上报告质数而不是在每一个偶数上报告质数的错误
摘自:
一旦你知道一个数字不是素数,你就需要停止迭代。找到素数后添加一个
break
以退出while循环。仅对代码进行少量更改以使其正常工作:
你的算法相当于:
如果将它放入一个函数中,则可以省去
break
和其他:即使你要像这样对素数施加暴力,你只需要迭代到
n
的平方根。另外,您可以跳过两个之后的偶数测试。有了这些建议:
请注意,此代码不能正确处理
0
、1
和负数。我们通过使用
all
和生成器表达式替换for循环来简化此过程。相关问题 更多 >
编程相关推荐