Decomposition d'un nombre en puissances de facteurs premiers.

Contenu du snippet

1ere source ici, le code décompose un nombre en produits de facteurs premiers, par exemple en entrant 1256 , la page vous sortira 1256 = 2^3*157^1.
si vous entrez deux nombres, le script cherche le PGCD grace a l'algorithme d'euclide, puis l'affiche, ainsi que le PPCM.
Chaque facteur est ensuite stocké dans une valeur d'un array $prem, et donc facilement evolutif.
script en ligne sur http://tpepetrole0506.free.fr/navette/fact2.php

Source / Exemple :


<?php
$f1 = $_GET['a'];
$f2 = $_GET['b'];
function prems($num) 
{
if ( $num != "" ) {
$a = 2;
$h1 = $num;
echo "$num = ";
while ($num > 1) {
$b = $num / $a;
if (is_int($b)) {
$num = $b;
$fact = "$fact $a";
}
else {
$a++;
}
}
$o = 1;
$m = 1;
$d = 1;
$prem["$h1"] = explode(" ", $fact);
while($o < count($prem["$h1"])) {
if ($prem["$h1"][$o] == $prem["$h1"][$o + 1]) {
 $m = $m + 1;
}
if ($prem["$h1"]["$o"] != $prem["$h1"][$o + 1]) {
 if ($o + 1 == count($prem["$h1"])) {
 echo $prem["$h1"]["$o"] ."^". $m;
 $d = $d * ($m + 1);
 }
 else {
 echo $prem["$h1"]["$o"] ."^". $m ."*";
 $d = $d * ($m + 1);
 }
$m = 1;
}
$o++;
}
echo "<br>". $h1 ." admet exactement ". $d ." diviseurs<br>";
if ( $d == 2 ) {
echo $h1 . " est premier </br><br>";
}
}
}
prems($f1);
prems($f2);

function PGCD($a,$b) {
$r = fmod($a,$b);
$p = $b;
while ( fmod($a,$b) != 0 ) {
$r = fmod($a,$b);
$a = $b;
$b = $r;
if ( fmod($a,$b) == 0) {
return ($b);
}
}
if ($r == 0) {
return ($p);
}
}
$pgcd = PGCD($f1,$f2);
echo "<br>PGCD(".$f1.",".$f2.")=". $pgcd;
$ppcm = ( $f1 * $f2 ) / $pgcd;
echo "</br>PPCM(".$f1.",".$f2.")=". $ppcm;

?>
<form action="" method=GET><input type=text name="a" value="<?php echo $_GET['a']; ?>"/><input type=text name="b" value="<?php echo $_GET['b']; ?>"/><input type=submit value="Submit" style="background:aqua"/></form>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.