现实问题:
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。现在设计一个程序来验证这个猜想。
问题描述:
设计一个程序,验证2000以内的偶数都可以分解成两个素数之和。比如:24=5+19,其中5和19都是素数。
输入格式:
输入在一行中给出一个(2, 2 000]范围内的偶数N。
输出格式:
在一行中按照格式“N = p + q”输出N的素数分解,并输出所有可能解。
解决办法:
1、素数的判断方法:(代码如下:)
这个算法题很容易理解就不多说了,多看看代码就明白了
def prime(i):
if i <= 1:
return False
elif i == 2:
return True
else:
for m in range(2, int(i**0.5+1)):#这里直接选用i也可以,但是会浪费很多算力所以这样选择
if i % m == 0:
return False
else:
return True
2、主函数:
if __name__ == "__main__":
j = int(input('请输入一个大于二的正整数:'))
count = 0
print('符合题意的解有:')
for i in range(4, j, 2):
for n in range(2, i):
if prime(n) and prime(i-n):
print('{}={}+{}'.format(i, n, i-n))
count += 1
elif i == n:
print('error')
print('综上所述:共有{}个解!'.format(count))
3、完整代码:
def prime(i):
if i <= 1:
return False
elif i == 2:
return True
else:
for m in range(2, int(i**0.5+1)):
if i % m == 0:
return False
else:
return True
if __name__ == "__main__":
j = int(input('请输入一个大于二的正整数:'))
count = 0
print('符合题意的解有:')
for i in range(4, j, 2):
for n in range(2, i):
if prime(n) and prime(i-n):
print('{}={}+{}'.format(i, n, i-n))
count += 1
elif i == n:
print('error')
print('综上所述:共有{}个解!'.format(count))
算法题有很多,但是每一道自己做过的题都一定要化为自己脑海的最深处,慢慢积累,总有一天会有质变的!