PHPBuilder - Pythagorean Triple Generator



RSS Twitter
Snippets Math Functions

Pythagorean Triple Generator

by: Matt Dunlop
|
May 28, 2005

Version: 1

Type: Full Script

Category: Math Functions

License: GNU General Public License

Description: Pythagorean triples are the lengths of the sides of a right angled triangle which are all integers. Enter how many triples you want to find, and the script will display them for you. Working (and formatted) version of script: http://xodus.xionenet.com/triples.php :)



<form action='<?=$_SERVER['PHP_SELF']?>' method='post'>
	<table>
    		<tr>
			<td colspan='3' class='header'>Pythagorean Triple Generator</td>
     		</tr>
       		<tr>
       			<td colspan='2'>Generate first <input type='text' name='num' size='3' maxlength='3' value='<?php if (isset($_POST['num'])) { echo $_POST['num']; } else { echo "100"; } ?>' onfocus="value=''" /> triples</td>
       			<td><input type='submit' name='submit' value='go' /></td>
       		</tr>	
		<tr>
			<td width='75'><b>length a</b></td>
			<td width='75'><b>length b</b></td>
			<td width='75'><b>hypoteneuse</b></td>
		</tr>

<?php
 
/////////////////////
// a^2 + b^2 = c^2 //
/////////////////////

if (isset($_POST['submit'])) {
	$max = $_POST['num']; // How many triples to find?
} else {
	$max = 0; // No value = no triples >:D
}

$i = 1; // Triple Counter
$c = 1; // Hypoteneuse length
$f = 1; // Variable for alternating

while ($i <= $max)  { // Generate only number of triples required
	$csq = $c*$c;	
	$b = 1;
	while ($b < $c) { // Generating length of a different side
		$bsq = $b*$b;
		$asq = $csq - $bsq;
		$a = sqrt($asq);
		
		// Display every other triple, otherwise duplicates will occur...
		if ($f) {
			$f = FALSE;
		} else {
			$f = 1;
		}
		
		// If result is an integer, it's a triple!
	       	if(ereg("^[0-9]+$", $a) && $f) { // Is the result an integer?  If yes, we have a triple...
	       		echo "<tr><td>$a</td><td>$b</td><td>$c</td></tr>\n"; 
	       		$i++; // Increment triple counter
	      	}
		$b++; // Increment length B
	}
	$c++; // Raise the hypoteneuse to look for more triples...
}
?>
	</table>
</form>

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Matt Dunlop

Comment:



Comment:

(Maximum characters: 1200). You have characters left.