我正在编写一个简单的算法来检查整数的素数,但我在将这段 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
最佳答案
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 方式。
引用:
关于java - Python 的 Java 标准 for 循环的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17415198/