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