什么是Java相当于Java的标准for循环?

时间:2013-07-01 23:24:12

标签: java python loops for-loop translate

我正在编写一个简单的算法来检查整数的原始性,我在将这个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

4 个答案:

答案 0 :(得分:19)

Python中唯一的for - 循环在技术上是“for-each”,所以你可以使用像

这样的东西
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循环的末尾有一个return true)。实际上,后者将被视为接近它的 Pythonic 方式。


<强>参考:

答案 1 :(得分:4)

直接翻译是:

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

答案 2 :(得分:2)

在Java for循环中,步骤(示例中的i += 2部分)出现在循环结束时,就在重复之前。转换为一段时间,你的for循环将等同于:

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

Python中的类似内容:

i = 3
while i < math.sqrt(n):
    if n % i == 0:
        return False
    i += 2

但是,您可以使用Python的xrange函数使其更加“Pythonic”并且更容易阅读,这允许您指定step参数:

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

答案 3 :(得分:1)

使用基本的Python for i in range循环:

for i in range(3, math.round(math.sqrt(x)), 2):
    if (n % i == 0):
        return false