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
Nog geen reacties.