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.