无题

# 在质数列表中,除了第一个质数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()
运行结果

你可能感兴趣的:(无题)