Soyez le premier à donner votre avis sur cette source.
Snippet vu 13 980 fois - Téléchargée 23 fois
<?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>
Sinon ton code source est pas mal.
Bonne continuation...
Préférer les simples quotes aux doubles quotes... .. .
$fact = "$fact $a";
S'écrira
$fact .= ' '.$a;
de même pour
$m $m + 1; > $m += 1;
$d $d * ($m + 1); > $d *= ($m + 1);
Moi j'aurais bien vu lke tout sous forme de fonction... .. .
<?php
if(isset($_GET['num']) && !empty($_GET['num']))
{
function getFactor($n)
{
if(!is_numeric($n))
return false;
elseif(is_float($n))
return false;
elseif(!is_int($n)) // string ?
{
if(strpos($n,'.') !== false)
return false;
}
$fact $n.' ';
$a = 2;
while ($n > 1)
{
$b = $n / $a;
if (is_int($b))
{
$n = $b;
$f .= ' '.$a;
}
else $a++;
}
$o = 1;
$m = 1;
$d = 1;
$prem = explode(' ', $f);
$count = count($prem);
while($o < $count)
{
if ($prem[$o] === $prem[$o + 1])
$m += 1;
if ($prem[$o] !== $prem[$o + 1])
{
if ($o + 1 === $count)
{
$fact .= $prem[$o] .'^'. $m;
$d *= ($m + 1);
}
else
{
$fact .= $prem[$o] .'^'. $m .'*';
$d *= ($m + 1);
}
$m = 1;
}
$o++;
}
return array(
'fact' => $fact,
'div' => $d,
'isFirst' => ($d === 2)
);
}
$result = getFactor($_GET['num']);
if($result !== false)
{
echo $result['fact'].'
'.$_GET['num'].' admet exactement '.$result['div'].' diviseurs';
if($result['isFirst'])
echo '
'.$_GET['num'].' est premier';
}
else echo '
'.$_GET['num'].' n\'est pas numérique ou n\'est pas un entier !';
}
?>
<form action="?" method="GET">
</form>
@ tchaOo°
Pour le PGCD, il vaut mieux utiliser l'agiorithme d'Euclide (plus rapide sur les grands nombres).
Pour le PPCM, il suffit d'utiliser PPCM(A;B)=A×B/PGCD(A;B).
euh je l'ai crée pour m'aider dans mes devoirs de spe maths niveau T°S (a l'origine je l'avais ecrit pour ma calculette)
bien sur on peut vite l'adapter pour trouver le pgcd, ppcm, et par extension en cryptographie.
sinon vu qu'il s'agit d'un script à usage personnel, je n'ai pas mis de maximum ou de script limitant l'entrée de characteres autres que des chiffres.
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.