A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liangzemin 初级黑马   /  2018-10-7 12:31  /  1258 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  来黑马也已经有半个月多了,经过这么几天的基础学习,也对python有了一定的了解,这门语言更加简单优雅,更注重思维方式,这边的话要求发一篇技术贴,感觉还没入门,好像并没有什么技术可以发,也不敢说是技术贴,haha,还是分享一个学习的经历吧,有不对的地方请多多指教~  下面的话给大家说一下当时遇到的一个问题吧———编写一个函数验证哥德巴赫的猜想:任何一个充分大的偶数(大于等于6)总可以表示成2个素数之和并且表示出来。
1编程思想:这个还是比较偏于数学问题,首先的话需要想怎么样才能实现证实这个猜想,要得到的是一个式子,素数+素数=偶数。首先我们需要知道的是素数有哪些,可以以100以内的为例来验算。偶数有哪些,先定义一个空的列表,使用for循环遍历,或者使用while循环,中间插入if判断语句符合要求的加入这个空列表。素数的话满足的条件是只能被1或者自身整除,假定数n,如果遍历除以2到(n-1)都不能整除的话n就是素数,同样也是定义空列表把符合条件的用if语句加入列表。得出了素数和偶数的列表,任意求和这边需要用到import random 的随机函数,先是遍历一下偶数,然后在偶数的循环下在遍历素数,然后用相减得出的数,判断这个数是否在素数的列表之中,如果在的话就是成立。这个就是整体的思路。
2实现代码:100以内的素数为例
import random
oushu = []
for j in range(6,101,2):
    oushu.append(j)
print(oushu)

sushu = [1,2]  #1,2素数判断会影响循环直接写入列表
for i in range(3,100):  
    for j in range(2,i):
        if i % j ==0: #能被整除
            break
    else:
        sushu.append(i)
print(sushu)


for o in oushu:
    for k in sushu:
        if o - k in sushu:
            print("结论成立 %d=%d + %d " % (o,k,o-k))
            break
    else:
        print("结论不成立")

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马