Din pacate a trecut mai mult de o zi, insa revin cu restantele.
Ciurul lui Eratostene:function eratostene($number) { //construieste lista cu toate numerele for ($i=1;$i<$number;$i++) { $erat[$i]=1; } //elimina din lista multiplii fiecarui numar for ($i=2;$i<$number;$i++) { if ($erat[$i]) { for ($j=2;$j*$i<$number;$j++) { $erat[$i*$j]=0; } } } return $erat; }
Algoritmul lui Atkin:
function atkin($number) { //se construieste lista de numere, initializata cu valoarea 0 for ($i=1;$i<$number;$i++) { $atkin[$i]=0; } //se adauga in lista diverse numere prime for ($i=1;$i<sqrt($number);$i++) { for ($j=1;$j<sqrt($number);$j++) { $x=4*$i*$i+$j*$j; if ($x<$number && ($x%12==1 || $x%12==5)) { $atkin[$x]=1; } $x=3*$i*$i+$j*$j; if ($x<$number && $x%12==7) { $atkin[$x]=1; } $x=3*$i*$i-$j*$j; if ($i>$j && $x<$number && $x%12==11) { $atkin[$x]=1; } } } //se elimina din lista patratele perfecte for ($i=5;$i<sqrt($number);$i++) { $x=$i*$i; $j=1; while ($j*$x<$number) { $atkin[$j*$x]=0; $j++; } } $atkin[2]=1; $atkin[3]=1; return $atkin; }Desi din literatura de specialitate (chiar si din citirea la prima vedere a algoritmilor) am inteles ca Atkin ar fi mai rapid, mie mi-a iesit exact invers. Dar probabil numerele nu au fost suficient de mari.
salut. succes in continuare dar nu inteleg de ce ai incetat sa mai publici.
RăspundețiȘtergereApropo, pentru cei interesati aici este un exemplu de afisare a numerelor prime cu ajutorul "Ciurului lui Eratostene" in limbajul Pascal https://sites.google.com/site/sursadeinspiratie/programare/probleme-programare
Nu am incetat, am mai putin timp.
RăspundețiȘtergereDar am un blog alternativ in care sunt mai activ: algorithmik.wordpress.com