いくつかの簡単な素数を求めるアルゴリズムの複雑さの分析


             ,                     ,         。          :          ,                       ,        。                    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
                                    '''
  • このアルゴリズムの計算複雑度は(n/3052)(n 0.5+1)/2(全範囲を30に分割すると6の倍数が5個あり、隣接する数が10個)であり、空間複雑度も同様にO(n 1.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)。
    
                        ,                     。