Sito Eratostenesa- zrozumienie

0

Cześć, poniżej umieszczę FRAGMENT kodu który mnie interesuje, a którego nie rozumiem wystarczająco dobrze
Fragment który zaznaczyłem poprze "=====" prezentuje pętle i ma działać następująco
Ma za zadnie wykreślać kolejne wielokrotności liczb tak by wyszukiwał liczby pierwsze w zakresie do 100.000
Nie do końca rozumiem co się tam dzieje

#include <stdio.h>
#include <math.h>

int main()
 {
   int i,j;
   int tablica[100000];
   int zakres = 100000;
   int dokad=floor(sqrt(zakres)); //najwięskza wartość z pierwiastka z "n"-a - zaokrąglenie z niedomiarem
   int licznik;
   //inicjuj tablice
   
   for (i=1; i<=zakres; i++)
      {
       tablica[i]=1;
      }

   //algorytm - sito eratostenesa
  =============================================================== 
   for (i=2; i<=dokad; i++)
    {
      if (tablica[i] != 0)
         {
           j = i+i;
           while (j<=zakres)
             {
               tablica[j] = 0;
               j += i;
             }
         }
    }
    ===============================================================

0

Jak samo sito działa to ja wiem ;)
Ale moje pytanie odnosi się do tego co dzieje się w kodzie
Mamy zmienną sterującą i która zmienia i rosnąco o 1
później wchodzimy do funkcji warunkowej if jesli wartość pod numerkiem [i] jest różna od 0, to wykonuje się podwojenie
a co w pętli while się dzieje to nie wiem

0

Jak działa Sito Eratostenesa masz przedstawione pod tym linkiem: https://upload.wikimedia.org/wikipedia/commons/b/b9/Sieve_of_Eratosthenes_animation.gif

Szukasz liczb pierwszych, zaczynasz od liczby 2

 (i=2) 

( 2 jest liczbą pierwszą, w takim razie wykreślasz wszystkie kolejne wielokrotności tej liczby, w tym celu tworzysz sobie nową pętlę ze zmienną sterującą** j**, która przyjmuje kolejną wielokrotność dwójki ( w tym przypadku 4,6,8... ) . Ta pętla działa sobie, aż nie osiągnie Twojego zakresu. Liczby, które są wielokrotnością 2 w tablicy są zerowane, po to, by już nie operować znowu na wielokrotnościach dwójki

(tablica[i] != 0)

1 użytkowników online, w tym zalogowanych: 0, gości: 1