Scripts

Priemgetal checker & Priemgetal lijster

Met dit scriptje kan je gemakkelijk checken of een getal een priemgetal is of niet. Je kan er ook alle priemgetallen tussen een bepaald getal a en b mee laten oplijsten. Online voorbeeld: http://paradox-productions.net/priemgetallen.php

priemgetallen.php
[code]<?php

set_time_limit(0); // Om timeouts te vermijden bij grote getallen

// Loadtime bepalen
$starttime = microtime();
$startarray = explode(" ", $starttime);
$starttime = $startarray[1] + $startarray[0];

?>

<html>
<head>
<style type="text/css">
body {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}

table tr td {
	font-size: 12px;
	padding: 5px;
}

fieldset {
	border: 1px solid #555;
	width: 400px;
	margin: 5px;
	display: inline-block;
	vertical-align: top;
}

legend {
	padding: 5px;
}

input {
	border: 1px solid #CCC;
	padding: 2px;
}

hr {
	background: #EEE;
	border: 0;
	height: 1px;
}
	
</style>
<title>Priemgetallen</title>
</head>
<body>
<form action="" method="post">
	<fieldset>
    	<legend>Check Priemgetal</legend>
        <table>
        	<tr>
            	<td>Getal</td>
                <td><input type="text" size="4" name="number" /></td>
                <td><input type="submit" name="check" value="Controleer Getal" /></td>
          	</tr>
      	</table>
        <?php
		
			if($_SERVER['REQUEST_METHOD'] == "POST") {
				$number = $_POST['number'];
				if(isset($_POST['check']) && !empty($number) && is_numeric($number)) {
					$gevondenDelers = 0;
					for($i = 1; $i <= $number; $i++) {
						$result = $number / $i;
						if(is_int($result)) {
							$gevondenDelers++;
						}
					}
					if($gevondenDelers == 2) { // Precies 2 delers, 1 en zichzelf
						echo '<span style="background: #DFFFE3; padding: 2px;">Het getal <b>' . $number . '</b> is een priemgetal.</span>';
					}
					else {
						echo '<span style="background: #FFDFE3; padding: 2px;">Het getal <b>' . $number . '</b> is geen priemgetal.</span>';
					}
				}
			}
			
		?>
   	</fieldset>
    
    <fieldset>
    	<legend>Lijsten Priemgetallen</legend>
        <table>
        	<tr>
            	<td>Van</td>
                <td><input type="text" size="4" name="number1" /></td>
            	<td>Tot</td>
                <td><input type="text" size="4" name="number2" /></td>
                <td><input type="submit" name="lijst" value="Maak Lijst" /></td>
           	</tr>
       	</table>
        <?php
		
			if($_SERVER['REQUEST_METHOD'] == "POST") {
				$number1 = $_POST['number1'];
				$number2 = $_POST['number2'];
				$columns = 10;
				if(isset($_POST['lijst']) && !empty($number1) && !empty($number2) && is_numeric($number1) && is_numeric($number2)) {
					$i = $number1;
					$totalNumbers = $number2 - $number1 + 1;
					$tableDesignCount = 1;
					$priemgetal = 0;
					echo '<table style="width: 100%;">';
					while($i <= $number2) {
						if($tableDesignCount == 1) {
							echo '<tr>';
						}
						$gevondenDelers = 0;
						for($i2 = 1; $i2 <= $i; $i2++) {
							$result = $i / $i2;
							if(is_int($result)) {
								$gevondenDelers++;
							}
						}
						
						echo '<td><span style="padding: 2px; background: #';
						if($gevondenDelers == 2) {
							echo 'DFFFE3';
							$priemgetal++;
						}
						else {
							echo 'FFDFE3';
						}
						echo '">' .  $i++ . '</span></td>';
						if($tableDesignCount == $columns) {
							echo '</tr>';
							$tableDesignCount = 0;
						}
						$tableDesignCount++;
					}
					echo '</table>';
					echo '<p>Er zijn ' . $priemgetal . ' getallen van de ' . $totalNumbers . ' (' . round(($priemgetal/$totalNumbers)*100) . '%) getallen priem.</p>';
				}
			}
			
		?>
   	</fieldset>
</form>
<?php
$endtime = microtime();
$endarray = explode(" ", $endtime);
$endtime = $endarray[1] + $endarray[0];
$totaltime = $endtime - $starttime;
$totaltime = round($totaltime, 3);
echo "<center>Loadtime: " . $totaltime . " seconds.";
?>
</body>
</html>[/code]

Reacties

0
Nog geen reacties.