2015-12-24 8 views
-1

В этом Сумма простых чисел Algo:Python - Сумма простых чисел

Пусть S (v, р) сумма чисел в диапазоне от 2 до V, которые остаются после просеивания со всех простых чисел меньше или равно чем p. То есть S (v, p) представляет собой сумму целых чисел до v, которые являются либо простыми, либо произведением простых чисел, больших p.

S (v, p) равно S (v, p-1), если p не является простым или v меньше, чем p2. В противном случае (p prime, p2≤v) S (v, p) может быть вычислено из S (v, p-1) на , находя сумму целых чисел, которые удаляются при просеивании с p. На этом этапе удаляется целое число , если оно является произведением p с другим целым числом , которое не имеет делителя меньше p. Это можно выразить как

S (v, p) = S (v, p-1) -p (S (⌊v/p⌋, p-1) -S (p-1, p-1))

def P10(n): 
    sqrt = int(n**0.5) 
    V = [n//i for i in range(1,sqrt+1)] 
    V += list(range(V[-1]-1,0,-1)) 
    S = {i:i*(i+1)//2-1 for i in V} 
    for p in range(2,sqrt+1): 
     if S[p] > S[p-1]: # p is prime 
      sp= S[p-1] # sum of primes smaller than p 
      p2 = p*p 
      for v in V: 
       if v < p2: break 
       S[v] -= p*(S[v//p] - sp) 

return S[n] 

Я немного запутался в этой части:

if S[p] > S[p-1]: # p is prime 

Означает ли это значение доступно в S по индексу p? Значения p варьируются от 2 до sqrt, а S - индексы от V. Не будет ли это причиной исключения индекса?

Спасибо. * Я новичок python

ответ

2

S - это словарь, к которому обращается ключ, используя аналогичный синтаксис для доступа к списку-индексу. «Ключ» различия в том, что:

  1. Она возвращает исключение KeyError, если он выходит из строя (где р не является ключевым в S, в данном примере)

  2. Конкретное значение сохранено в S для p - отметить двоеточие в конструкторе {i: i * (i + 1) // 2-1 для i в V}. Ключ установлен в элемент списка в V, а связанное значение устанавливается на результат последующей математической обработки.

В фигурных скобках {} указано, что словарь строится, а двоеточие отделяет назначение ключа от присвоения значений.

Смежные вопросы