if ($value) { // zjistim jestli cislo uz neni vynulovane
for ($i=1;($exp = $value*$i) < $max;$i++) { // vynuluju vsechny nasobky aktualniho cisla
$numbers[$exp-2] = null; /* ///Opraveno/// U $exp musí být -2,
/ protože bychom při testování trojky
/ odebrali pětku - pole $numbers totiž vypadá takto:
/ Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 ... [97] => 99 [98] => 100 )
/ Jak jste si mohli všimnout číslo 5 má index 3 a číslo 3 má index 1,
/ a zde nastává problém, kdybychom neodečetli od indexu dvojku, tak namísto
/ to, abychom vynulovali všechny násobky daného čísla, tak nulujeme nasobky
/ daného čísla zvětšeného o 2. Příklad:
/ Testujeme č. 3: Vynásobíme jedničkou, dostaneme trojku,
/ ale podle původního kódu bychom vymazali pětku,
/ protože proměnná $numbers s indexem 3 odkazuje na 5,
/ a proto musíme kód ošetřit tak,
/ aby index odkazoval na správné číslo, tzn. chceme vymazat trojku,
/ takže chceme aby proměnná $numbers s indexem 3 vymazala trojku.
/ Takže když na trojku odkazuje $numbers s indexem 1, tak musíme zařídit,
/ aby se index 1 opravdu rovnal, a proto je tam ta -2.
/ Číslo 3 je pouhý příklad, toto by nastalo u všech dalších čísel.
*/
}
$primes[] = $value; // pridam si zjistene prvocislo do vystupu
|