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