python验证哥德巴赫猜想2000以内_Python验证哥德巴赫猜想

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

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

#!/usr/bin/env python

__author__ = ‘淮南霏霏‘

"""

脚本编写环境python 3.4.2

哥德巴赫猜想 简单验证

"""

import math

class 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 True

if __name__ == ‘__main__‘:

a = Goldbach(100000)

a.check()

原文:http://www.cnblogs.com/shiluocn/p/4906019.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值