数学领域著名的“哥德巴赫猜想”的大致意思是 任何一个大于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))
算法题有很多 但是每一道自己做过的题都一定要化为自己脑海的最深处 慢慢积累 总有一天会有质变的



