Python 这个素数程序的一部分对我来说毫无意义
有人能解释一下吗Python 这个素数程序的一部分对我来说毫无意义,python,Python,有人能解释一下吗 for k in range(2, 1+int(sqrt(i+1))): 对我来说?我很难理解怎么做 1+int(sqrt(i+1) 确实有效 我知道1正在添加到I,它是平方根的,必须是整数。但我不明白这是如何实现整个计划的目标的 from math import sqrt count = 1 i = 1 while count < 1000: i += 2 for k in range(2, 1+int(sqrt(i+1))): i
for k in range(2, 1+int(sqrt(i+1))):
对我来说?我很难理解怎么做
1+int(sqrt(i+1)
确实有效
我知道1
正在添加到I
,它是平方根的,必须是整数。但我不明白这是如何实现整个计划的目标的
from math import sqrt
count = 1
i = 1
while count < 1000:
i += 2
for k in range(2, 1+int(sqrt(i+1))):
if i%k == 0:
break
else:
# print(i) ,
count += 1
# if count%20==0: print ""
print i
从数学导入sqrt
计数=1
i=1
当计数小于1000时:
i+=2
对于范围(2,1+int(sqrt(i+1)))内的k:
如果i%k==0:
打破
其他:
#印刷品(i),
计数+=1
#如果计数%20==0:打印“”
打印i
其目标是找到第1000个素数。如果要测试一个数的素数性,那么测试sqrt(数)以下的所有因子就足够了,因为任何高于sqrt(数)的因子都有一个低于sqrt(数)的对应因子
e、 g.如果你想测试36是否为素数,测试最多6个就足够了——例如,12是36的一个因子,但它的另一个因子是3,你那时已经测试过了。如果要测试一个数字的素数,那么测试所有的因子到sqrt(数字)就足够了,因为任何高于sqrt(数字)的因子具有低于sqrt(编号)的相应系数
e、 g.如果你想测试36是否为素数,那么最多测试6就足够了——例如,12是36的一个因子,但它的另一个因子是3,到那时你已经测试过了。对于任何给定的复合数n,我们可以证明它的至少一个素数因子必须小于或等于√N(我不知道这个众所周知的事实的名称,但证明它几乎是微不足道的,因为任何大于sqrt(n)的素数因子都必须有一个小于或等于它的对应因子)。因此,这种天真的方法只是通过这里描述的算法来实现的:还要注意,Python循环上的“else”关闭是针对这样的情况,即正在执行搜索。搜索因子或增加计数。对于任何给定的复合数n,我们可以证明它的至少一个素因子必须小于或等于√N(我不知道这个众所周知的事实的名称,但证明它几乎是微不足道的,因为任何大于sqrt(n)的素数因子都必须有一个小于或等于它的对应因子)。因此,这种天真的方法只是通过这里描述的算法来实现的:还要注意,Python循环上的“else”关闭是针对这样的情况,即正在执行搜索。搜索因子或递增计数。