Scomposizione di $n in fattori primi:
"; while($k<=sqrt($n)){ //tentiamo di dividere per 2,3,....fino a radice di n $kexp=0; // azzeramento contatore esponente $resto=$n%$k; // calcoliamo n modulo k (resto della divisione fra n e l) while($resto==0){ //fintantochè è divisibile per lo stesso divisore //echo"
k=$k n=$n radice quadrata=".sqrt($n)."
"; $kexp++; // aumentiamo d1 il contatore degli esponenti $n=floor($n/$k); //effettuiamo la divisione (n diminuisce!!!) $resto=$n%$k; // calcoliamo di nuovo il modulo e vediamo se è ancora divisibile per lo stesso numero } //torna testare la condizione // arrivati a questo punto del programma kexp contiene un numero indicante // quante volte k ha diviso il valore iniziale if($kexp!=0){ // se k ha diviso almeno una volta echo "$k$kexp "; // mostriamo il divisore e il relativo esponente } //echo"
k=$k n=$n radice quadrata=".sqrt($n)."
"; $k++; // passiamo al prossimo candidato divisore } // stampa delle statistiche if($n!=1){ echo" $n"; } $time+=microtime(True); $time*=1000*1000; echo "
tempo di esecuzione in microsecondi: $time ULTIMO DIVISORE: ".($k-1); ?>