Prima di proseguire...
Potrebbe interessarti la nostra collezione di esercizi C risolti?
Oggi vediamo due metodi per il calcolo dei numeri primi in php, il primo meno efficiente ma che consente di verificare subito se un numero è primo, il secondo molto efficiente ma che però necessita di sapere se i numeri precedenti a quello corrente sono primi.
In pratica:
1:
<?php function primo($num){ for($i=2;$i<$num;$i++) if(!($num%$i)) return 0; return 1; } $primi = 100000; for($i=2;$i<=$primi;$i++) if(primo($i)) print $i."<br />\n"; ?>
Questo metodo non fa altro che che fare $primi iterazioni controllando ogni volta se $i è primo, per controllarlo usa la funzione primo, che ritorna un valore diverso da 0 se il numero è primo, per far ciò controlla se il numero passato come parametro è divisibile per tutti gli altri numeri precedenti >=2.
2:
<?php function primo($num){ //dichiarazione/inizializzazione static $primi = array(2); //controllo sul 2 if($num == 2) return 1; elseif($num<2) return 0; //controllo numeri primi foreach($primi as $primo) if(!($num%$primo)) return 0; $primi[count($primi)] = $num; return 1; } $primi = 100000; for($i=2;$i<=$primi;$i++) if(primo($i)) print $i."<br />\n"; ?>
Questo metodo non fa altro che memorizzarsi tutti i numeri primi in un vettore statico, cioè un vettore che anche dopo che la funzione è stata eseguita mantiene il suo valore, inizializzato all’inizio ad 2. In seguito esegue il controllo con i numeri primi già trovati e non con tutti i numeri; mentre per quanto riguarda il resto del programma resta uguale al primo metodo.
Guarda un esempio di applicazione di queste funzioni
calcolo dei numeri primi in php by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.