Pythagorean triples: Difference between revisions
Content deleted Content added
m →version 2: made minor changes, added whitespace. -- ~~~~ |
No edit summary |
||
Line 1,740: | Line 1,740: | ||
Up to 10000000000: 14557915466 triples, 702304875 primitives. |
Up to 10000000000: 14557915466 triples, 702304875 primitives. |
||
109.694u 0.094s 1:50.43 99.4% 0+0k 0+0io 0pf+0w</pre> |
109.694u 0.094s 1:50.43 99.4% 0+0k 0+0io 0pf+0w</pre> |
||
=={{header|Perl}}== |
|||
<lang perl>sub gcd { |
|||
my ($n, $m) = @_; |
|||
while($n){ |
|||
my $t = $n; |
|||
$n = $m % $n; |
|||
$m = $t; |
|||
} |
|||
return $m; |
|||
} |
|||
sub tripel { |
|||
my $pmax = shift; |
|||
my $prim = 0; |
|||
my $count = 0; |
|||
my $nmax = sqrt($pmax)/2; |
|||
for( my $n=1; $n<=$nmax; $n++ ) { |
|||
for( my $m=$n+1; (my $p = 2*$m*($m+$n)) <= $pmax; $m+=2 ) { |
|||
next unless 1==gcd($m,$n); |
|||
$prim++; |
|||
$count += int $pmax/$p; |
|||
} |
|||
} |
|||
printf "Max. perimeter: %d, Total: %d, Primitive: %d\n", $pmax, $count, $prim; |
|||
} |
|||
tripel 10**$_ for 1..8; |
|||
</lang> |
|||
{{out}} |
|||
<pre>Max. perimeter: 10, Total: 0, Primitive: 0 |
|||
Max. perimeter: 100, Total: 17, Primitive: 7 |
|||
Max. perimeter: 1000, Total: 325, Primitive: 70 |
|||
Max. perimeter: 10000, Total: 4858, Primitive: 703 |
|||
Max. perimeter: 100000, Total: 64741, Primitive: 7026 |
|||
Max. perimeter: 1000000, Total: 808950, Primitive: 70229 |
|||
Max. perimeter: 10000000, Total: 9706567, Primitive: 702309 |
|||
Max. perimeter: 100000000, Total: 113236940, Primitive: 7023027 |
|||
</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |