其实差不多。
在python中,典型的for循环使用range(start, end, step)函数来获取索引变量i。它循环通过i=start 到i=end-1,同时将i 递增step。
for i in range(start, end, step):
这相当于C/C++/Java的
for (int i = start; i < end; i+=step)
然后,停止n 的平方根。您只需使用以下内容:
import math
for i in range(2, int((math.sqrt(n))+1):
注意math.sqrt(n) 给出了float。然后将其包装在int 中,采用float 的floor。并且由于for 循环在end-1 处停止,我们加1,因此这模仿了OP 请求的行为,即i*i <= n。
一些例子使这更容易:
例如n=4,然后:
-
math.sqrt(n)=2.0,
-
int((math.sqrt(n))=2,
-
int((math.sqrt(n))+1=3
for i in range(2, 3) 将使用 i=2 运行循环,并在 i 达到 3 之前停止。
现在,如果 n 不是完美的正方形:
例如n=10,
math.sqrt(n)=3.16...
-
int((math.sqrt(n))=3,
-
int((math.sqrt(n))+1=4
而for i in range(2, 4) 将使用i=2 和i=3 运行循环,并在i 达到4 之前停止。
虽然循环是完全一样的。 i*i 的另一种写法是 python 中的i**2。
i=2
while i**2 <= n:
i+=1