Python Prime数字集

时间:2014-03-12 00:29:51

标签: python numbers

我试图编写一个程序,打印出一组给定数字的所有素数。当我运行下面编写的程序时,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()

2 个答案:

答案 0 :(得分:3)

这是你的素数功能被打破

i/pcheck == int(i/pcheck)

这一行在左侧已经是一个int(在python 2.x中)。

在脚本顶部添加from __future__ import division,您会看到不同的结果!

答案 1 :(得分:0)

如果您想检查除法答案是否返回i​​nt或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之间的每个素数。