编程心得

第一次试尝发表一篇文章

哥德巴赫猜想大概的意思是:一个不小于6的偶数都是两个奇素数之和,即所谓的1+1=2。我当然无法证明,写一个验证程序玩玩还是可以的,我用Python,不吝赐教。

""" 哥德巴赫猜想。一个不小于6的偶数都是两个奇素数之和,一个不小于9的奇数都是3个奇素数之和。
输入任意一个上述范围的整数,判断是否满足要求。
"""
import math
import time


def prime(m):
    x = math.ceil(math.sqrt(m))
    for k in range(3, x + 2, 2):
        if m != k and m % k == 0:
            return False
    return True


def even_numbers(m):
    for k in range(3, int(m / 2) + 2, 2):
        if prime(k) and prime(m - k):
            print("{0}+{1}={2}".format(k, m - k, m))
            return True
    return False


def odd_number(m):
    for i in range(3, int(m / 2) + 2, 2):
        if prime(i):
            for j in range(3, int((m - i) / 2) + 2, 2):
                if prime(j) and prime(m - i - j):
                    print("{0}+{1}+{2}={3}".format(i, j, m - i - j, m))
                    return True
    return False


if __name__ == '__main__':
    try:
        n = int(input("请输入一个不小于6的偶数或不小于9的奇数:\n"))
        if n == 7 or n < 6:
            print("输入错误!")
            exit()
        print("计算中……")
        t0 = time.time()
        mark = even_numbers(n) if n % 2 == 0 else odd_number(n)
        print("耗时{0}s".format(time.time() - t0))
        if not mark:
            print("验证错误!")
    except ValueError:
        print("输入错误!")

D:\Python\study\venv\Scripts\python.exe D:/Python/study/1+1=2.py
请输入一个不小于6的偶数或不小于9的奇数:
123456789876543212
计算中……
211+123456789876543001=123456789876543212
耗时39.79626250267029s

Process finished with exit code 0
D:\Python\study\venv\Scripts\python.exe D:/Python/study/1+1=2.py
请输入一个不小于6的偶数或不小于9的奇数:
12345678987654321
计算中……
3+37+12345678987654281=12345678987654321
耗时12.457630634307861s

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值