请输出1~100之间的素数(自定义函数的方法):
一、
>>> def isprime(x):
if x == 1:
return False
k = int(sqrt(x))
for j in range(2,k+1):
if x%j == 0:
return False
else:
return True
>>> for i in range(1,101):
if isprime(i):
print(i)
二、
>>> def isprime(x):
if x == 1:
return False
k = int(sqrt(x))
for j in range(2,k+1):
if x%j == 0:
return False
return True
>>> for i in range(1,101):
if isprime(i):
print(i)
三、
>>> def isprime(x):
if x == 1:
return False
k = int(sqrt(x))
for j in range(2,k+1):
if x%j == 0:
return False
return True
>>> for i in range(1,101):
if isprime(i):
print(i)
一和二输出的结果一样,是从5~99的奇数,而三才是题目中要求的结果。
主要是因为return true的缩进问题导致的。
在一、二中,return true是针对if语句的,只要不能x与j不能整除就是true。例如,当x=9,j=2时,余数不为0,则是true,不需要9除以3的余数是否为0。只要有一个j,使得x除以j不为0,则x就是true的。
而在三中,return true需要将for语句循环完毕,x除以所有的j的余数都不为0则是满足条件的x。