作者: 52_St | 来源:发表于2018-01-14 17:13 被阅读28次
    # 在质数列表中,除了第一个质数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

    相关文章

      网友评论

          本文标题:

          本文链接:https://www.haomeiwen.com/subject/vmakoxtx.html