我试图编写一个程序,打印出一组给定数字的所有素数。当我运行下面编写的程序时,shell返回2和3,没有进一步。我的计划中有什么限制了这个过程?
def main():
for i in range (2, 100): #the set of numbers from which
if is_prime(i): #we want our prime numbers
print(i)
def is_prime(i):
prem = int((i**.5)+1) #prem is square root plus one
for pcheck in range (2, prem): #of i, the counter in our number set
if i/pcheck == int(i/pcheck):
#^numbers evenly divisible by other numbers return false
return False
#if they don't, it's true
return True
main()
答案 0 :(得分:3)
这是你的素数功能被打破
i/pcheck == int(i/pcheck)
这一行在左侧已经是一个int(在python 2.x中)。
在脚本顶部添加from __future__ import division
,您会看到不同的结果!
答案 1 :(得分:0)
如果您想检查除法答案是否返回int或float,我建议您使用以下代码。
def is_prime(i):
prem = int((i**.5)+1) #prem is square root plus one
for pcheck in range (2, prem): #of i, the counter in our number set
if str(float(i)/pcheck).endswith(".0"):
#confirm whether the float answer ends with .0 or not
return False
#if they don't, it's true
return True
str(float(i)/pcheck).endwith(".0")
如果除法答案以.0
结尾,则返回True例如,
1.0/3 = 0.3333333333333333 In this case return False
10.0/5 = 2.0 In this case return True
最后这些代码包括你的main()函数返回1到100之间的每个素数。