luni, 22 octombrie 2012

Algoritm numere prime - PHP

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