python用遞歸篩選法求N之內的孿生質數(孿生素數)

本人最近讀完一本書《質數的孤獨》,裏面講到孿生質數,就想查一下孿生質數的分佈狀況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for循環來作的,感受略微麻煩了一些,在比較一些仍是以爲用遞歸篩選法來解決這個問題。java

新建List,而後從第0位開始,若是後面的能被這個數整除,則從數組中移除改元素,以此類推,最後留下的就是質數(素數)。python

python版本與java版本不一樣,java能夠在遍歷list的時候刪除該元素,能夠對循環變量i進行i--的操做,防止之後的get(i)方法報錯,python不支持這個操做只能是拿到被刪除的元素,而後在遍歷結束之後再去刪除編程

代碼以下:數組

#!/usr/bin/python3
 
class Test():
    def __init__(self):
        print ("fan")
    def get(self,list,st):
        n = list[st]
        a = []
        for i in range(st+1,len(list)):
            if list[i] % n == 0:
                a.append(list[i])
        for x in a:
            list.remove(x)
        if len(list) > st+1:
            self.get(list,st+1)
if __name__ == "__main__":
    test = Test()
    list = [i for i in range(2,5000)]
    test.get(list,0)
    for i in range(len(list)-1):
        a = list[i]
        b = list[i+1]
        if b-a==2:
            print ("孿生質數:"+str(a)+"----"+str(b))

這裏備註一下:python爲了防止內存溢出,限制了遞歸的深度,因此直接求10000之內的還不行,會報錯:app

RecursionError: maximum recursion depth exceeded in comparison框架

技術類文章精選

  1. java一行代碼打印心形
  2. Linux性能監控軟件netdata中文漢化版
  3. 接口測試代碼覆蓋率(jacoco)方案分享
  4. 性能測試框架
  5. 如何在Linux命令行界面愉快進行性能測試
  6. 圖解HTTP腦圖
  7. 如何測試機率型業務接口
  8. httpclient處理多用戶同時在線
  9. 將swagger文檔自動變成測試代碼
  10. 五行代碼構建靜態博客
  11. httpclient如何處理302重定向
  12. 基於java的直線型接口測試框架初探

非技術文章精選

  1. 爲何選擇軟件測試做爲職業道路?
  2. 成爲傑出Java開發人員的10個步驟
  3. 寫給全部人的編程思惟
  4. 自動化測試的障礙
  5. 自動化測試的問題所在
  6. 測試之《代碼不朽》腦圖

點擊查看公衆號地圖

相關文章
相關標籤/搜索