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

Den*_* A. 11 python java loops for-loop translate

我正在编写一个简单的算法来检查整数的原始性,我在将这个Java代码转换为Python时遇到了问题:

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

所以,我一直在尝试使用它,但我显然正在跳过3:

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

ars*_*jii 19

forPython中唯一的-loop技术上是"for-each",所以你可以使用像

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

当然,Python可以做得更好:

all(n % i for i in xrange(3, int(math.sqrt(n)), 2))
Run Code Online (Sandbox Code Playgroud)

也是等价的(假设return true在Java循环结束时有一个).实际上,后者将被视为接近它的Pythonic方式.


参考:

  • @mipadi我认为他的意思是Python没有类似C的`for`循环,它合并了初始化器,停止条件和步骤语句.那就是:Python中唯一的`for`就是`foreach`. (4认同)