calcolo dei numeri primi in php


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.

N.B. questa non è altro che una traduzione in php dal c di un calcolatore, che avevo già presentato in un precedente articolo.

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

CC BY-SA 4.0 calcolo dei numeri primi in php by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Lascia un commento