Python:用函数思想完成哥德巴赫猜想

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

 

上一篇:分布式存储中间件(1):10000字把Redis扒个干净,一发入魂


下一篇:数据库mysql之视图的修改