4187: 哥德巴赫猜想

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

    史上和质数有关的数学猜想中,最著名的当然就是"哥德巴赫猜想"了。哥德巴赫1742年给大数学家欧拉的信中提出了以下猜想:任意大于2的偶数都可写成两个质数之和。但是时至今日,哥德巴赫猜想也没有从数学上给出完备的证明。目前最接近的论证是1966年,中国的陈景润证明了"1 + 2" 。

    20世纪,随着计算机技术的发展,可以证明对于非常大的数始终是成立的。可是自然数是无限的,谁知道会不会在某一个足够大的偶数上,突然出现哥德巴赫猜想的反例呢?

    请将100以内的大于2的偶数表示为两个质数之和。

1. 获得一个100以内所有的质数列表

2. 获得一个100以内大于2的偶数列表

3. 遍历偶数列表,从质数列表中找是否存在两个质数之和等于当前偶数:使用偶数减去当前的质数,若差也在质数列表中则满足猜想,找到之后打印到屏幕上并中断当前循环。

样例输入 复制


样例输出 复制

6=3+3
8=3+5
10=3+7
12=3+9
14=3+11
16=3+13
18=3+15
20=3+17
22=3+19
24=3+21
26=3+23
28=3+25
30=3+27
32=3+29
34=3+31
36=3+33
38=3+35
40=3+37
42=3+39
44=3+41
46=3+43
48=3+45
50=3+47
52=3+49
54=3+51
56=3+53
58=3+55
60=3+57
62=3+59
64=3+61
66=3+63
68=3+65
70=3+67
72=3+69
74=3+71
76=3+73
78=3+75
80=3+77
82=3+79
84=3+81
86=3+83
88=3+85
90=3+87
92=3+89
94=3+91
96=3+93
98=3+95

提示

#获取质数列表
ls=[]
for i in range(2,100):
    flag=True
    for j in range(2,i):
        if i % j==0:
            flag=False
            break
        if flag:
            ls.append(i)
m=[]
for i in range(4,100):
    if i%2==0:
        m.append(i)
for x in m:  #遍历偶数列表
    for y in ls: #遍历质数列表
        a=y
        b=x-y #使用偶数减去当前的质数
        if b in ls: #若差也在质数列表中则满足猜想
            print(str(x)+'='+str(a)+'+'+str(b))
            break