Python 循环不应该工作但仍然可以工作

标签 python loops

所以我决定这个周末学习 python,我从我的默认 hello world,素数求解器开始。这段代码不应该工作...但无论出于什么原因它都可以工作(对于数字 5 及更高)。

#!/usr/bin/python
a = 2
while a < 65535:
    c = 0
    a = a + 1
    b = 2
    while b != a:
        if a % b == 0:
            #print a, "is not prime. LCD is ", b
            break
        b = b + 1
     if a - 1 == b: c = 1
 if c == 1: print a, " is prime"

最后一个条件的下一个应该始终为 false,但对于所有 5 及以上的素数,a -1 == b 应该始终为 false。

有人可以指出这个菜鸟的错误吗,因为我显然错过了一些容易描述的东西。

下面进一步回答。

最佳答案

如果a不是素数,它至少有两个真约数,并且其中一个必须小于平方根(或者两者都是平方根)。如果b达到sqrt(a)+1,则a一定是素数。因此,如果b达到a - 1,您就可以非常确定它是素数。您还可以将其替换为 if a - 3 == ba/2(但这可能不适用于较小的素数)。

关于Python 循环不应该工作但仍然可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6181157/

相关文章:

python - Django int() 参数必须是字符串、类似字节的对象或数字,而不是 'QueryDict'

python - Python遇到空行如何设置vim不缩进?

azure - 根据条件迭代 map map 内的列表

c++ - 是否有可能在 c++ 中有一个 while 循环,使检查在循环的中间而不是开始或结束?

java - 如何使用 Joda-Time 循环月份?

python - 如何使用 OpenCV 和 Python 从图像中分离出手写文本?

oop - 在 Python 中启用用户代码扩展的流行技术是什么?

python - 将查询数据保存到数据帧时出错

java - 检查字符串中是否存在模式

R 循环使用牛顿法近似正实数的平方根