我正在编写一个简单的算法来检查整数的原始性,我在将这个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循环结束时返回true).实际上,后者将被视为接近它的Pythonic方式.
参考:
> for
Statements
> xrange
> all