Python相当于Java的标准for-loop是什么?

2022-09-03 18:02:32

我正在编写一个简单的算法来检查整数的首要性,但是我在将此Java代码转换为Python时遇到问题:

for (int i = 3; i < Math.sqrt(n); i += 2) {
    if (n % i == 0)
        return false;
}

所以,我一直在尝试使用它,但我显然跳过了3的除法:

i = 3
while (i < int(math.sqrt(n))):
    i += 2  # where do I put this?
    if (n % i == 0):
        return False

答案 1

Python中唯一的-loop在技术上是“for-each”,所以你可以使用类似的东西。for

for i in xrange(3, int(math.sqrt(n)), 2):  # use 'range' in Python 3
    if n % i == 0:
        return False

当然,Python可以做得更好:

all(n % i for i in xrange(3, int(math.sqrt(n)), 2))

也是等效的(假设在 Java 循环的末尾有一个)。事实上,后者将被认为是Pythonic处理它的方式。return true


参考:


答案 2

直接翻译是:

for i in range(3, int(math.sqrt(n)), 2):
    if n % i == 0:
        return False

推荐