Pythagorean triples: Difference between revisions
Content added Content deleted
(Improved first D version) |
(Go solution) |
||
Line 331: | Line 331: | ||
Up to 10000000 9706567 triples 702309 primitives |
Up to 10000000 9706567 triples 702309 primitives |
||
Up to 100000000 113236940 triples 7023027 primitives</pre> |
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}}== |
=={{header|Icon}} and {{header|Unicon}}== |