该算法来自 百度百科

def primes(n):
P = []
f = []
for i in range(n+1):
if i > 2 and i%2 == 0:
f.append(1)
else:
f.append(0)
i = 3
while i*i <= n:
if f[i] == 0:
j = i*i
while j <= n:
f[j] = 1
j += i+i
i += 2

P.append(2)
for x in range(3,n,2):
if f[x] == 0:
P.append(x)

return P

n = 50
P = primes(n)
print P

要得到自然数n以内的全部素数,必须把不大于 的所有素数的倍数剔除,剩下的就是素数。
给出要筛数值的范围n,找出n以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去……。

下面是小学生的算法,我的

def is_prime(n):
if n < 2:
return False


i=2
while i < (n/2 + 1):
if n % i == 0:
return False
i+=1


return True


print is_prime(17)