91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

幾種簡單的求素數算法的復雜度分析

發布時間:2020-07-09 23:28:46 來源:網絡 閱讀:1291 作者:wx5b57da496a886 欄目:編程語言
    素數的算法有很多種,現在主要講兩種算法及其改進版本的復雜度分析,解釋性能提升的幅度。同時應用一個素數定理:素數的平方一定是合數,那么在范圍內最大數的開方范圍內找不到能整除的數,那么這個數是素數。應用這個定理可以將取模范圍的空間復雜度從O(n)降為O(n**0.5).現以求100000內素數為例,兩種算法分別是:
      1.基礎思路是去掉偶數,包括取模的范圍,代碼如下:

print(2)
for i in range(3,100000,2):
  for a in range(3,int(i**0.5)+1,2):
    if i%a == 0:
     break
    else:
     print(i,end = ' ')
'''

                            *此兩層循環的算法的計算復雜度為(0.5*n*((n**0.5)+1)/2),空間復雜度為O(n**1.5)

          2.應用一個素數定理:大于6的素數一定與6的倍數相鄰,代碼如下:
              '''
                print(2,3,end = ' ')
                 n = 100000
                 i = 5
           step = 2
                while i<= n:
                         for j in range(5,int(i**0.5)+1,2):
                                if j%j == 0:
                                    break
                            else:
                                    count += 1
                            i += step
                            step = 4 if step ==2 else 2
                                    '''
  1. 此算法的計算復雜度為(n/3052)(n0.5+1)/2(將總范圍分成30為一塊,則6的倍數有5個,相鄰的數就是10個),空間復雜度同樣為O(n1.5)

                     優化思路:
                     對于1號算法,我們知道末尾是5的數一定能被5整除,所以末位是5的數一定不是素數,j計算復雜度可以降為0.4*n*((n**0.5+1)*0.4)。不是偶數且末為不是5,就剩(1,3,7,9),所以4/10=0.4,第二層循環也是如此。優化效率提升56%(0.5**2/0.4**2-1=0.56)。
                     對于2號算法,思路也是刨去末位為5的數。例如,30~60這一塊內,6的倍數有(36,42,48,54,60),相鄰的數是(35,37,41,43,47,49,53,55,59,61),有兩個末位是5的數(35,55),所以將總范圍分成30為一塊,只需計算8個數,優化后空間復雜度為(n/30*(5*2-2))*(n**0.5+1)*0.4=4/15*n*(n**0.5+1)*0.4。相比優化后的1號算法,優化后的2號算法效率提升50%(其余項約分,只剩0.4/(4/15),所以0.4/(4/15)-1=0.5)。
    
                    綜上可見,降低算法復雜度是提高解決問題效率的不二法門。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

特克斯县| 淳安县| 酉阳| 缙云县| 成武县| 阳高县| 闻喜县| 年辖:市辖区| 惠东县| 阿拉善右旗| 孙吴县| 北碚区| 松桃| 桦川县| 鄂伦春自治旗| 贵德县| 油尖旺区| 义乌市| 辽源市| 西华县| 蕉岭县| 章丘市| 泾阳县| 哈巴河县| 米泉市| 贡觉县| 遵义县| 广州市| 沂南县| 平顺县| 雅安市| 丽水市| 铜川市| 汉中市| 西乌珠穆沁旗| 青阳县| 育儿| 义马市| 天水市| 靖江市| 吴川市|