天天看点

2021-08-27:验证哥德巴赫猜想之一: 2000以内的正偶数(大于等于4)都能够分解为两个质数之和。

验证哥德巴赫猜想之一:

2000以内的正偶数(大于等于4)都能够分解为两个质数之和。(每个偶数表达成形如: 4=2+2 的形式)

# -*- coding: utf-8 -*-
"""
Created on Thu Aug 26 21:11:46 2021
敲下世界只为她!
PRACTICE MAKES PERFECTS.
@author: leeandcao
"""
'''
8.1验证哥德巴赫猜想之一: 2000以内的正偶数(大于等于4)都能够分解为两个质数之和。每个偶数表达成形如: 4=2+2 的形式。
'''
import math
def prime(x):           # 2,3是素数
    '''素数(质数)判断自定义程序'''
    if x == 1:
        return False    #输入的数是1 返回值是错误
    n = int(math.sqrt(x))   #最短区间
    for i in range(2,n+1):
        if x % i == 0:   # 余数是0就是有能被整除的数
            return False
    return True
 
# 输入1、2、3进步入循环;输入4临界值;输入5,break直接结束循环;输入6,3所管的边界;输入7,怎么理解呢?;输入8,素数不过
def GC(n): 
    k = 3   # 大于等于4的正偶数,能分解为两个质数之和
    while k < n:    # 如果这个数大于3为真,强调了第一个应该为4的正整数
        t = n-k     # t是什么?输入数与k的差值,就是把这个数平移三个数,输入4,t=1
        if t < k:   # 如果这个差值小于3,直接跳出循环,输入5差值为2,输入6差值为3不满足条件
            break
        if prime(k) and prime(t): # 由于prime(k)未曾改变其中的值,所以一直为真 只有prime的值为真才执行
            return k,t  # 为什么判断两个都是质数要返回k和t呢?k值意味着什么呢,两个质数分解怎样分解
        k += 2      # k= 3,5,7,9...奇数  
  
n = int(input('Enter a number :'))
if n > 4:
    a,b = GC(n)
    print('{}={}+{}'.format(n, a, b)) # a 乃变化的k值 ,b 是n,a之差。
elif n == 4:
    print('{}={}+{}'.format(2, 2, 2))