Eratosthenovo síto: Porovnání verzí

Smazaný obsah Přidaný obsah
Řádek 148:
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: Array ([3] => 5), a proto musíme kód ošetřit tak,
/ aby index odkazoval na správné číslo, tzn. chceme vymazat trojku,
/ tudíž chceme platilo Array ([3-2] => 3) >>> Array ([1] => 3),
/ tak jako tomu je u výpisu nahoře.
*/
}
$primes[] = $value; // pridam si zjistene prvocislo do vystupu
Řádek 156 ⟶ 170:
}
</source>
 
==Externí odkazy==
*[http://www.faust.fr.bw.schule.de/mhb/eratosiv.htm Interaktivní animace] (vyžadován [[JavaScript]])