Python 每日一题(验证哥德巴赫猜想)

Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。


题目:

   哥德巴赫猜想:任何一个6以上的偶数都可以分解为2个素数的和,俗称:1+1=2,例如:6=3+3,8=3+5,10=5+5,12=5+7,...

分析:

  此问题在于:找到一个小于偶数 n 的素数 p ,并且要满足:q = n - p 也是素数, 即:n 可以分解为 p 与 n-p 两个素数之和。

  程序解释:n = p + q,假设 p <= n / 2,设置maxp=n//2,构建 p=1,3,5,...,maxp 的循环,判断 p 是否为素数。如果p不是素数,将 p =p+2换下一个 p 在继续,如果 p 是素数,并判断 q = n - p 是否是素数,如果不是则继续 p = p + 2 的下一个 p 测试,如果 q 也是素数,找一个 分解 n = p + q,其中 p,q 都是素数。

  一个偶数分解为两个素数的和分解不是唯一的;例如: 24=5+19,24=17+7 。

 程序实现:

def even(num):
    '''
        判断数是否符合要求:是偶数且大于等于6
    :param num: 需要判断的数
    :return: 符合返回该数
    '''
    if num % 2 == 0 and num >= 6:
        return num


def isprime(num):
    '''
        判断传入的数是否为素数
    :param num: 判断的数
    :return: 是素数则返回True,否则返回False
    '''
    if num > 2:
        for x in range(2, num // 2 + 1):
            if num % x == 0:
                return False
        else:
            return True
    return False


def ge_de_ba_he(n):
    if even(n):
        print(f'{n} = ', end='')
        for p in range(1, n // 2 + 1):
            if isprime(p) and isprime(n - p):
                print(f"{p} + {n - p}")
                break
    else:
        print('您传入的不是偶数')

ge_de_ba_he(14)
ge_de_ba_he(24)
ge_de_ba_he(32)
ge_de_ba_he(17)

实现结果:

14 = 3 + 11
24 = 5 + 19
32 = 3 + 29
您传入的不是偶数

结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!! 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值