2016-10-20 3 views
0

N * (½ + ⅓ + ⅕ + ...) = O (NloglogN)Почему сложность (1/2 + 1/3 + 1/5 + ...) = loglogN?

Почему сложность (1/2 + 1/3 + 1/5 + ...) = loglogN? Я не понимаю,

Вот код:

void sieve(int N) { 
    bool isPrime[N+1]; 
    for(int i = 0; i <= N;++i) { 
     isPrime[i] = true; 
    } 
    isPrime[0] = false; 
    isPrime[1] = false; 
    for(int i = 2; i * i <= N; ++i) { 
     if(isPrime[i] == true) { 
      // Mark all the multiples of i as composite numbers 
      for(int j = i * i; j <= N ;j += i) 
       isPrime[j] = false; 
     } 
    } 
} 
+1

См. [Дивергенция суммы обратных чисел простых чисел] (https://en.wikipedia.org/wiki/ Divergence_of_the_sum_of_the_reciprocals_of_the_primes) –

+0

Не понимаю. Как написано, в сумме нет N в сумме, как это может быть лог-журнал N? Вместо этого бесконечная сумма расходится. – Henry

+0

(Предел) Порядок роста - сложность нигде не отображается. – greybeard

ответ

2

Согласно https://en.wikipedia.org/wiki/Prime_number_theorem штрихами получить более редки, как числа становятся больше, поэтому плотность в п приблизительно п (п). Таким образом, один из способов приблизиться к вашей проблеме - превратить ее в интеграл, где вы хотите, чтобы интеграл от x = 1 до x = n от 1/(x ln (x)). Я думаю, что производная от ln (ln (x)) равна (1/ln (x)) * (1/x) = 1/(x ln (x)), поэтому я считаю, что если это приближение справедливо, интеграл идет чтобы быть O (ln (ln (n)) - который получает ответ, который вы ищете.

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