哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加
范围 8 - 10000
思路:
首先不要去管需要什么什么东西实现,所以我们如果知道如何去完成:
大于8的偶数之和都可以被两个素数相加:
# 可以假设 这个猜想是正确的。
# 设一个变量是true
flag = True
# 确定范围 8 - 10000
for fanwei in range(8,10000,2):
# 如果猜想错误如何?
if not caixiang(fanwei):
flag = False
# 正确又如何错误又如何?
if flag = True:
print('猜想正确')
else:
print('猜想错误')
之后我们去写一个函数 来确定这个猜想是否正确,正确就返回 True
def caixiang(n):
# 这里需要所有的素数 8 - 10000的
# 这里的目的是为了拆分出两素数参数n 和 循环名 m 两个变量
for m in range(1,n//2+1):
if sushu(m) and sushu(n-m):
return True
return False
最后发现还要判断是否是素数:
def sushu(n):
su = 0
for i in range(1,n-1):
c = n%i
if c == 0:
su += 1
return True
这样这个哥德巴赫猜想就完成了。
完整代码:
# 功能:判断是否是一个素数
# def sushu(n):
# i = 1 # 需要整从1 开始
# su = 0 # 被整除的次数 如果等于二就是素数
# while i <= n: # 完成从 a/1 到 a/a 后 结束
# c = n % i # c为余数
# if c == 0: # 判断余数是否是0
# su += 1 # 是的话记一个数
# i += 1 # 开始 a/2
# return True
# 以上判断素数改成for 循环
def sushu(n):
su = 0
for i in range(1,n-1):
c = n%i
if c == 0:
su += 1
return True
# 判断猜想:需要所有的素数与fanwei 来判断 两两相加是否等于那个数
def caixiang(n):
# 这里需要所有的素数 8 - 10000的
# 这里的目的是为了拆分出两素数参数n 和 循环名 m 两个变量
for m in range(1,n//2+1):
if sushu(m) and sushu(n-m):
return True
return False
# 哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加
# 范围 8 - 10000 , 由于是偶数步长为2
flag = True
for fanwei in range(8,10000,2):
# 如果猜想错误返回false 所以要设置变量 flagn
if not caixiang(fanwei):
flag = False
if flag == True:
print('猜想正确')
else:
print('猜想错误')