实验1--哥德巴赫猜想

2020.10.30星期五

实验一:算法时间性能的经验分析
验证哥德巴赫猜想。统计其关键语句的执行次数。并绘制规模-执行次数散点图。
(Goldbach Conjecture)猜想:即任一大于2的偶数都可写成两个质数之和。请验证这个对于
较大的偶数都是成立的。
算法:goldbach(n)
描述:算法验证对于小于等于n的偶数,歌德巴赫猜想都是成立的。注意,goldbach(200)并非
验证200可以拆分成两个质数的和,而是验证对于所有≤n的偶数,都可以拆分成两个质数的
和。
输入:整数n
输出:1表示成立;0表示猜想有误
注1:用excel绘制散点图,excel可以打开csv格式的文件。
注2:csv(comma seperated values)是如下格式的文件。如下所示,n是第一列,times是第二
列。你可以用python直接输出该文本文件。例如,400,1221,表示为了验证歌德巴赫猜想对于小
于等于400的偶数都成立,其关键语句执行了1221次。
一、结果如下
n,times
200,413
250,588
300,784
350,996
400,1221
450,1470
500,1727
550,2002
600,2288
650,2588
700,2899
750,3224
800,3556
850,3906
900,4256
950,4630
1000,5005
1050,5392
1100,5792
1150,6192
1200,6613
1250,7038
1300,7464
1350,7914
1400,8364
1450,8816
1500,9291
1550,9766
1600,10241
1650,10740
1700,11240
1750,11740
1800,12257
1850,12782
1900,13307
1950,13838
2000,14388
2050,14938
2100,15488
2150,16054
2200,16629
2250,17204
2300,17779
2350,18376
2400,18976
2450,19576
2500,20176
2550,20800
2600,21425
2650,22050
2700,22675
2750,23322
2800,23972
2850,24622
2900,25272
2950,25938
3000,26613
3050,27288
3100,27963
3150,28644
3200,29344
3250,30044
3300,30744
3350,31444
3400,32161
3450,32886
3500,33611
3550,34336
3600,35061
3650,35810
3700,36560
3750,37310
3800,38060
3850,38812
3900,39587
3950,40362
4000,41137
4050,41912
4100,42688
4150,43488
4200,44288
4250,45088
4300,45888
4350,46688
4400,47509
4450,48334
4500,49159
4550,49984
4600,50809
4650,51646
4700,52496
4750,53346
4800,54196
4850,55046
4900,55896
4950,56770
5000,57645
二、源代码
import numpy as np
import csv


# 验证一个正整数是否是素数
def is_prime(num):
    count = 0
    if num < 1 or num % 2 == 0:
        return count, False
    for i in range(2, num, 2):
        if i <= np.sqrt(num):
            if num % i == 0:
                return count, False
            count = count + 1
    return count, True


def goldbach_conjecture(n):
    count = 0
    for i in range(2, n):
        a_prime = is_prime(i)
        b_prime = is_prime(n-i)
        count = count + a_prime[0] + b_prime[0]
        if a_prime[1] and b_prime[1]:
            return [i, n-i], count, True
    return None, count, False


file = open('goldbachConjecture.csv', 'w', newline='', encoding='utf-8')
csv_writer = csv.writer(file)
csv_writer.writerow(['n', 'times'])
for i in range(200, 5001, 50):
    count = 0
    for j in range(2, i+1, 2):
        count = count + goldbach_conjecture(j)[1]
    csv_writer.writerow([i, count])
三、数据分析:

数据分析图片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实验6-6使用函数验证哥德巴赫猜想,是一项数学实验,旨在验证哥德巴赫猜想的正确性。该猜想指出,任何一个大于2的偶数都可以表示成两个质数之和。通过编写函数,计算出所有小于等于给定偶数的质数,并对它们进行组合,验证是否能够得到给定偶数。这个实验可以帮助学生加深对质数和质因数分解的理解,同时也能够提高编程能力和逻辑思维能力。 ### 回答2: 哥德巴赫猜想是一个数论问题,它表明任何一个大于2的偶数都可以分解成两个质数之和。为了验证这个猜想,我们可以使用函数来进行计算。 我们首先需要定义一个函数 is_prime(n) 来判断一个数是否是质数。这个函数接受一个整数 n 作为参数,如果 n 是质数则返回 True,否则返回 False。判断一个数 n 是否是质数的方法是从 2 到 n-1 逐个判断是否能整除 n。如果能整除,则说明 n 不是质数,返回 False;如果到了 n-1 仍然没有找到 n 的因子,那么说明 n 是质数,返回 True。 接着我们可以定义一个函数 goldbach_conjecture(n),它接受一个大于2的偶数 n 作为参数。这个函数将 n 分解成两个质数之和,并返回这两个质数的列表。 首先,我们可以从 2 到 n-1 逐个判断每个数是否是质数。找到一个质数 p,我们可以计算出另一个质数 q = n - p。判断 q 是否是质数,如果是则返回 [p, q];否则继续判断下一个 p。这个过程可以用一个 for 循环来实现。 在 main 函数中,我们可以输入一个偶数作为参数调用 goldbach_conjecture 函数,并将得到的两个质数打印出来。我们可以通过多次调用这个函数,比较打印出的质数之和是否等于输入的偶数来验证哥德巴赫猜想。 需要注意的是,因为哥德巴赫猜想没有被证明,实际上 goldbach_conjecture 函数只是一种验证方法,不能作为证明来使用。 ### 回答3: 哥德巴赫猜想是一种数论假设,它认为任何一个大于2的偶数都可以表示成三个质数之和。在实验6-6中,我们使用函数验证哥德巴赫猜想。 我们可以定义一个函数,用来判断一个数是否为质数。如果一个数能够被1和它本身以外的数整除,那么它就不是质数。我们可以利用这个函数来寻找哥德巴赫猜想中三个质数的组合。 我们可以使用for循环来寻找第一个质数,从2开始每个数都依次判断是否为质数。如果找到了第一个质数后,我们可以再嵌套一层for循环来寻找第二个质数。此时需要从第一个质数的下一个数开始查找,因为哥德巴赫猜想中的三个质数不能相同。 如果找到了前两个质数,那么我们就可以用偶数减去这两个质数的和,来寻找第三个质数。如果第三个质数也被找到了,那么这个偶数就符合哥德巴赫猜想。 当然,在实际实验中,我们需要对所有可能的组合进行遍历,直到找到符合哥德巴赫猜想的偶数为止。因为哥德巴赫猜想仅仅是一种猜想,不是公认的定理。因此需要进行多次实验验证,才能让我们更加确信哥德巴赫猜想的正确性。 总之,在实验6-6中,我们使用函数验证哥德巴赫猜想的思路是:先定义一个函数用来判断一个数是否为质数,然后使用循环和判断,寻找哥德巴赫猜想中三个质数的组合。通过多次实验和验证,我们可以推断出哥德巴赫猜想的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值