哥德巴赫猜想"/>
4.3 函数与哥德巴赫猜想
哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的整数都可写成三个质数之和 [1] 。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明。 [2] 因现今数学界已经不使用“1也是素数”这个约定,原初猜想的现代陈述为:任一大于5的整数都可写成三个质数之和。(n>5:当n为偶数,n=2+(n-2),n-2也是偶数,可以分解为两个质数的和;当n为奇数,n=3+(n-3),n-3也是偶数,可以分解为两个质数的和)欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。今日常见的猜想陈述为欧拉的版本。把命题"任一充分大的偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b"。1966年陈景润证明了"1+2"成立,即"任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和"。
今日常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。——百度百科
构造函数验证哥德巴赫猜想
当然这里我们只能验证一部分数的哥德巴赫猜想,哥德巴赫猜想的证明还需要数学家来完成。
def isit(num):'''判断num这个是是不是质数如果是质数返回True如果不是返回False'''if num < 0:return Falseif num == 0 or num == 1:return Falseif num ==2 or num == 3:return Trueif num > 3:isdata = Truefor i in range(2,num):if num % i == 0:isdata = Falsebreakreturn isdatadef digitl(number):'''将数字number分解成俩个质数的和并且输出'''for j in range(2,number):if isit(j) == True:z = number - jif isit(z) == True:print(number,end='=')print('%d+%d'%(j,z))return Truedigitl(20)
我们还可以再写一个函数与以上函数组合判断一定范围内的偶数符不符合哥德巴赫猜想
def scope(num):for number in range(2,num+1,2):digitl(number)scope(20) #判断20以内的数
更多推荐
4.3 函数与哥德巴赫猜想
发布评论