Scripts
Ontbinden in priemfactoren
Een script dat een getal ontbindt in priemfactoren. Dus 200 wordt: 2 * 2 * 2 * 5 * 5 en 2940 wordt: 2 * 2 * 3 * 5 * 7 * 7 Het script gaat zo te werk: 1. Zoek alle priemgetallen die kleiner zijn dan of gelijk zijn aan het input getal en zet ze in de array $priemgetallen 2. Probeer het input getal te delen door alle priemgetallen, beginnend bij 2. Als dat lukt, zet het priemgetal waardoor het input getal gedeeld is in de array $priemfactoren. 3. Als het input getal hoger is dan 1, ga dan naar stap 2 Momentele versie: 1.5 P.S. Dit is mijn eerste script dat ik op PHPhulp post.
ontbinden-in-priemfactoren
[code]<?php
echo "<html><body>";
if (is_numeric($_POST['getal'])) // controleren of de input wel een getal is
{
$input_getal = $_POST['getal'];
if ($input_getal<2) echo 'Het getal dat ontbonden moet worden moet minimaal 2 zijn.';
else
{
$input_getal_wortel = sqrt($input_getal);
$priemgetallen = Array(2); // array waar alle gevonden priemgetallen in komen
$aantal_priemgetallen_gevonden = 1; // spreekt voor zich
$getal_proberen = 3; // het getal waarvan hij kijkt of het een priemgetal is
do
{
$is_priem = true; // of $getal_proberen een priemgetal is
$delen_door = 0; // door welk priemgetal uit $priemgetallen hij probeert te delen
do
{
if ($getal_proberen%$priemgetallen[$delen_door]==0) $is_priem = false; // kijken of $getal_proberen deelbaar is
$delen_door++;
}
while(($priemgetallen[$delen_door]<($getal_proberen/2))&&$is_priem&&(isset($priemgetallen[$delen_door])));
if ($is_priem)
{
$priemgetallen[$aantal_priemgetallen_gevonden] = $getal_proberen; // als $getal_proberen een priemgetal is hem in de array $priemgetallen zetten
$aantal_priemgetallen_gevonden++;
}
$getal_proberen += 2;
}
while($getal_proberen<$input_getal_wortel);
$priemfactoren = Array();
$aantal_priemfactoren = 0; // het aantal priemfactoren hij al gevonden heeft
$momenteel_getal = $input_getal; // het getal dat steeds door een priemgetal gedeeld wordt
$priem_tel = 0;
while (($momenteel_getal>1)&&(isset($priemgetallen[$priem_tel])))
{
if ($momenteel_getal%$priemgetallen[$priem_tel]==0)
{
$momenteel_getal /= $priemgetallen[$priem_tel];
$priemfactoren[$aantal_priemfactoren] = $priemgetallen[$priem_tel];
$aantal_priemfactoren++;
}
else
{
$priem_tel++;
}
}
$teller = 0;
foreach($priemfactoren as $factor)
{
echo $factor;
$teller++;
if (isset($priemfactoren[$teller])) echo " * ";
}
}
}
echo "<br><br>";
echo '<form action="ontbinden_in_priemfactoren.php" method="POST">';
echo 'Getal om te ontbinden: <input type="text" name="getal" size="20"><br>';
echo '<input type="submit" value="Ontbind">';
echo '</form></body></html>';
?>
[/code]
Reacties
0