Статья Автор: Лебедев Дмитрий Алексеевич

Простые числа_файлы и не только

Создаем решето






Решето Эратосфена. Вариант А Решето Эратосфена. Вариант А  
def r_A(N):
    M = [1]*N
    d = 2 
    while d * d <= N :
        for j in range( d * d, N, d): 
                M[j] = 0
        d += 1
    return M
def r_B(N):
    M = [1]*N
    i = 2
    while i * i < N:
        M[i*i:N:i]=[0]*-(-N//i + i);
        i += 1
    return M
 
N time A time B  time A/ time B Память A
(пик) MB
Память B
(пик) MB
10**5 0.06 0.016 3.75 0.79 1.53
10**6 0.55 0.11 5 7.66 15.26
5*10**6 4.48 0.76 5.89 38.18 76.3
10**7 9.78 1.75 5.58 76.29 152.59
5*10**7 58.0 11.2 5.17 381.47 762.94
10**8 126.8 25.8 4.91 762.94 1525.88
Прикрепленные файлы
pr_1000000.ch
pr_10000000.ch
Печать