Pythagorean triples: Difference between revisions

Added Wren
m (→‎{{header|Sidef}}: Fix link: Perl 6 --> Raku)
(Added Wren)
Line 4,611:
Up to 10000000 : 9706567 triples, 702309 primitives.
Up to 100000000 : 113236940 triples, 7023027 primitives.</pre>
 
=={{header|Wren}}==
{{trans|Go}}
Limited to a maximum perimeter of 10 billion in order to finish in a reasonable time.
<lang ecmascript>var sc = System.clock
var total = 0
var prim = 0
var maxPeri = 0
 
var newTri // recursive function so needs to be declared before it can be called
newTri = Fn.new { |s0, s1, s2|
var p = s0 + s1 + s2
if (p <= maxPeri) {
prim = prim + 1
total = total + (maxPeri/p).floor
System.write("") // // fixes a VM recursion bug
newTri.call( 1*s0-2*s1+2*s2, 2*s0-1*s1+2*s2, 2*s0-2*s1+3*s2)
newTri.call( 1*s0+2*s1+2*s2, 2*s0+1*s1+2*s2, 2*s0+2*s1+3*s2)
newTri.call(-1*s0+2*s1+2*s2, -2*s0+1*s1+2*s2, -2*s0+2*s1+3*s2)
}
}
 
maxPeri = 100
while (maxPeri <= 1e10) {
prim = 0
total = 0
newTri.call(3, 4, 5)
var secs = (System.clock - sc).round
System.print("Up to %(maxPeri): %(total) triples, %(prim) primitives, %(secs) seconds")
maxPeri = 10 * maxPeri
}</lang>
 
{{out}}
Timings are for an Intel Core i7-8565U machine running Wren 0.2.0 on Ubuntu 18.04.
<pre>
Up to 100: 17 triples, 7 primitives, 0 seconds
Up to 1000: 325 triples, 70 primitives, 0 seconds
Up to 10000: 4858 triples, 703 primitives, 0 seconds
Up to 100000: 64741 triples, 7026 primitives, 0 seconds
Up to 1000000: 808950 triples, 70229 primitives, 0 seconds
Up to 10000000: 9706567 triples, 702309 primitives, 1 seconds
Up to 100000000: 113236940 triples, 7023027 primitives, 5 seconds
Up to 1000000000: 1294080089 triples, 70230484 primitives, 51 seconds
Up to 10000000000: 14557915466 triples, 702304875 primitives, 554 seconds
</pre>
 
=={{header|zkl}}==
9,485

edits