Baiatul meu din clasa sasea avea ca tema niste exercitii cu numere prime. Si mi-a venit ideea sa fac un algoritm pentru cautarea numerelor prime.
Intai am scris un algoritm pentru a determina daca un numar este prim sau nu.
function calculate($number) {
$number=(int)abs($number);
if ($number==0 or $number==1) {
throw new Exception ("0 or 1 are special numbers!");
}
for ($i=2;$i<floor(sqrt($number)+1);$i++) {
if (!($number%$i))
return false;
}
return true;
}
Dupa cum se vede calculeaza daca fiecare numar mai mic decat jumatatea sa este divizorul sau.
Dupa aceea m-am gandit ca ar fi bine daca as putea afla cel mai apropiat numar prim de un alt numar (cu conditia ca numarul prim sa fie mai mic). Si mi-a iesit ceva de genul:
function smallerPrime($number) {
if ($number<=2) {
throw new Exception('2 is smaller prime number');
}
for ($i=$number-1;$i>1;$i--) {
if (calculate($i)) {
return $i;
}
}
}
Maine o sa revin cu algoritmi pentru determinarea tuturor numerelor prime mai mici decat un numar: ciurul lui Eratosthene si algoritmul Atkin.
Niciun comentariu:
Trimiteți un comentariu