# 在质数列表中,除了第一个质数2为偶数外,均为奇数,故先生成一个无限的奇数序列
# 从而为后续可以生成无限素数,打下基础,摆脱局限性。
def _odd_iter():
n = 1
while True:
n += 2
yield n
# 根据“埃氏筛选法”,逐步筛出所有的素数。
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(_not_divisible(n), it)
# 主程序,这里用first,和two,依次从素数序列中,取出两个元素
# 按照题目设定条件,进行筛查,并最终总返回结果。
def check_prime():
prime = primes()
first = next(prime)
two = next(prime)
lst = []
while two < 1000:
comp = [two - first, (two - first) // 2]
for prime1 in primes():
if comp[0] >= prime1:
if prime1 in comp:
lst.append(prime1)
continue
else:
break
first, two = two, next(prime)
lst = set(lst)
print('运行结果:{}'.format(lst))
check_prime()
QQ截图20180114165759.png
网友评论