python100以内孪生素数_python用递归筛选法求N以内的孪生质数(孪生素数)
本人最近讀完一本書《質數的孤獨》,里面講到孿生質數,就想查一下孿生質數的分布情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for循環來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞歸篩選法來解決這個問題。
新建List,然后從第0位開始,如果后面的能被這個數整除,則從數組中移除改元素,以此類推,最后留下的就是質數(素數)。
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以內的還不行,會報錯:
RecursionError: maximum recursion depth exceeded in comparison
技術類文章精選
非技術文章精選
總結
以上是生活随笔為你收集整理的python100以内孪生素数_python用递归筛选法求N以内的孪生质数(孪生素数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的dll文件在哪_Pytho
- 下一篇: 无忧考吧python编译环境不存在_py