亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

發布時間: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

吴堡县| 铁力市| 富源县| 南汇区| 珠海市| 南宁市| 云安县| 辉南县| 个旧市| 建湖县| 林芝县| 阳信县| 巴林右旗| 博客| 平塘县| 游戏| 建昌县| 南澳县| 江油市| 甘泉县| 平顺县| 元氏县| 河间市| 板桥市| 河北区| 潞西市| 元阳县| 井冈山市| 葫芦岛市| 新河县| 荣昌县| 大新县| 阳曲县| 加查县| 曲阜市| 衡东县| 石河子市| 仪陇县| 贡山| 宁国市| 象州县|