哥德巴赫猜想:大于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('猜想错误')