问题描述
众所周知,哥德巴赫猜想的证明是一个世界性的数学难题,至今未能完全解决。我国著名数学家陈景润为哥德巴赫猜想的证明作出过杰出的贡献。 所谓哥德巴赫猜想是说任何一个大于2的偶数都能表示成为两个素数之和。
编写程序,验证指定范围内哥德巴赫猜想的正确性,也就是近似证明哥德巴赫猜想。
分析:
构造素数判断函数;
在范围内50 遍历,找到偶数n;(奇数也要执行一次,算法复杂度较大,改用 i+=2 来直接找到偶数)
再用一个循环,i 遍历3到 n/2,判断i 和 n-i 是否是素数,是则输出
代码
import math
def isPrimeNumber(num):
i = 2
x = math.sqrt(num)
while i < x:
if num%i == 0:
return False
i += 1
return True
n=6
while n < 51:
for j in range(3,int(n/2)):
if isPrimeNumber(j) and isPrimeNumber(n-j):
print '%s = %s + %s' % (n, j, n-j)
#break # 找到符合的组合后,便结束内循环
n+=2
这里发现,有的偶数可以找出多种组合,所以会重复输出,只需要一组便得以证明,所以可以在print 后加上break(结束内循环)
知识积累
print ‘%s’ % 3, ‘%’
3 %