Pythagorean triples: Difference between revisions

Go solution
(Improved first D version)
(Go solution)
Line 331:
Up to 10000000 9706567 triples 702309 primitives
Up to 100000000 113236940 triples 7023027 primitives</pre>
=={{header|Go}}==
<lang go>package main
 
import "fmt"
 
var total, prim, maxPeri int64
 
func newTri(s0, s1, s2 int64) {
if p := s0 + s1 + s2; p <= maxPeri {
prim++
total += maxPeri / p
newTri(+1*s0-2*s1+2*s2, +2*s0-1*s1+2*s2, +2*s0-2*s1+3*s2)
newTri(+1*s0+2*s1+2*s2, +2*s0+1*s1+2*s2, +2*s0+2*s1+3*s2)
newTri(-1*s0+2*s1+2*s2, -2*s0+1*s1+2*s2, -2*s0+2*s1+3*s2)
}
}
 
func main() {
for maxPeri = 100; maxPeri <= 1e11; maxPeri *= 10 {
prim = 0
total = 0
newTri(3, 4, 5)
fmt.Printf("Up to %d: %d triples, %d primitives\n",
maxPeri, total, prim)
}
}</lang>
Output:
<pre>
Up to 100: 17 triples, 7 primitives
Up to 1000: 325 triples, 70 primitives
Up to 10000: 4858 triples, 703 primitives
Up to 100000: 64741 triples, 7026 primitives
Up to 1000000: 808950 triples, 70229 primitives
Up to 10000000: 9706567 triples, 702309 primitives
Up to 100000000: 113236940 triples, 7023027 primitives
Up to 1000000000: 1294080089 triples, 70230484 primitives
Up to 10000000000: 14557915466 triples, 702304875 primitives
Up to 100000000000: 161750315680 triples, 7023049293 primitives
</pre>
 
=={{header|Icon}} and {{header|Unicon}}==
1,707

edits