我在写一个程序,显示2到50之间的质数。在
def primeNr(interval):
print("Prime numbers from 2 to ",interval,"/n")
for i in range(1, interval):
c=0
for j in range(1, i):
if(i%j==0):
c+=1
if(c==2):
print (i)
但是当我调用它(primeNr(50)
)时,我得到了错误的输出(4,9,25,49)-我不知道为什么。在
作为一个额外的问题-我如何让下面的代码返回一个包含以下数字的列表,然后假设我想有两个变量p和q,从质数列表中选择一个随机数,比如
^{pr2}$(是的,它链接到RSA)。在
^{} 不包括其结束限制。因此,你会发现有三个除数的数(即素数的平方)。在
range的第二个参数不是inclusive,因此需要执行以下操作:(您可以在此处签出文档:definition of python range)
在数学上有一些改进的机会,例如,你只需要循环到
^{pr2}$math.sqrt
,当你第一次意识到一个数字不是质数时,只要打破它。(仍然不是最优化的,要进一步优化,您可以查看各种优质筛)。在以下是基于@aryamcarthy的一些建议编辑(感谢你提出这个想法!)。它使用特定的python语法-for…else(当循环正常完成而不遇到任何中断时,else子句执行):
相关问题 更多 >
编程相关推荐