Salve.
Stò cercando di fare una funzione che scomponga un numero in fattori primi.
Quella che ho scritto funziona, ma c'è un problema.
Esempio di output:
Codice:
12 | 2
6 | 2
3 | 3
1
2 x 2 x 3
Io vorei che la formuletta in basso sia 2^2 x 3.
Ecco il codice:
Codice PHP:
<?php
function test($n)
{
$prime = 1;
if ($n == 2) return $prime;
$a = $n % 2;
if ($a == 0) return 0;
for ($i=3;$i<$n;$i+=2) {
$q = $n % $i;
if ($q == 0) {
$prime = 0;
break;
}
}
return $prime;
}
function prime($n)
{
$i = 2;
$j = 0;
echo "<code>\n";
while($n > 1) {
if(($n % $i == 0) && (test($i) == 1)) {
if($n < 10) {
echo "0".$n." | ".$i."<br>";
} else {
echo $n." | ".$i."<br>";
}
$n /= $i;
if($n == 1) {
$str[$j] .= $i;
} else {
$str[$j] .= $i." x ";
}
$i = 2;
$j++;
} else {
$i++;
}
if($n == 1) {
echo "1<br><br>";
}
}
echo implode("",$str);
echo $str2;
echo "</code>\n";
}
prime(41111);
?>
Tutti i valori sono messi in'un'array, ma non so come fare per riconoscere se ci sono n valori uguali e raggrupparli