Python验证哥德巴赫猜想,,今天看到百度知道有人


今天看到百度知道有人问如何验证1000以内的数符合哥德巴赫猜想,就写了一个

感觉超过10000时有点慢啊,和java比起来效率差了点,希望高手能给优化下

  

#!/usr/bin/env python__author__ = ‘淮南霏霏‘"""脚本编写环境python 3.4.2哥德巴赫猜想 简单验证"""import mathclass Goldbach:    """    哥德巴赫猜想:任一大于2的偶数都可写成两个质数之和    """    def __init__(self, n=100):        """        哥德巴赫猜想 构造函数        :param n: n以内的偶数满足哥德巴赫猜想        :return:        """        self.n = n    def check(self):        """        验证 n 以内的偶数是否都符合哥德巴赫猜想        :return:        """        if self.n == 1 or self.n == 2:            print(str(self.n), ‘以内的偶数都满足哥德巴赫猜想‘)            return True        it = (i for i in range(3,self.n+1) if i % 2 == 0)       # 取出要验证的偶数的迭代器        for i in it:            if not self._conform(i):                print(‘偶数:‘, str(i), ‘不满足哥德巴赫猜想‘)                break        print(str(self.n), ‘以内的偶数都满足哥德巴赫猜想‘)    def _conform(self,n):        """        判断 n 符合哥德巴赫猜想        :param n: 偶数n        :return:        """        num = n // 2 + 1        for i in range(2,num):            if self._is_prime(i) and self._is_prime(n-i):                return True        return False    def _is_prime(self,num):        """        判断一个数是不是质数        :param num:        :return:        """        num1 = int(math.sqrt(num))        for i in range(2,num1+1):            if num % i == 0:                return False        return Trueif __name__ == ‘__main__‘:    a = Goldbach(100000)    a.check()

  

Python验证哥德巴赫猜想

相关内容

    暂无相关文章

评论关闭