驗證哥德巴赫猜想之一:
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))