Strange unique prime triplets: Difference between revisions

Content added Content deleted
(Added Wren)
(Added Go)
Line 69: Line 69:


Found 241,580 strange prime triplets with n, m, p < 1,000.
Found 241,580 strange prime triplets with n, m, p < 1,000.
</pre>

=={{header|Wren}}==
{{trans|Wren}}
<lang ecmascript>package main

import "fmt"

func isPrime(n int) bool {
switch {
case n < 2:
return false
case n%2 == 0:
return n == 2
case n%3 == 0:
return n == 3
default:
d := 5
for d*d <= n {
if n%d == 0 {
return false
}
d += 2
if n%d == 0 {
return false
}
d += 4
}
return true
}
}

func commatize(n int) string {
s := fmt.Sprintf("%d", n)
if n < 0 {
s = s[1:]
}
le := len(s)
for i := le - 3; i >= 1; i -= 3 {
s = s[0:i] + "," + s[i:]
}
if n >= 0 {
return s
}
return "-" + s
}

func strangePrimes(n int, countOnly bool) int {
c := 0
f := "%2d: %2d + %2d + %2d = %2d\n"
var s int

for i := 3; i <= n-4; i += 2 {
if isPrime(i) {
for j := i + 2; j <= n-2; j += 2 {
if isPrime(j) {
for k := j + 2; k <= n; k += 2 {
if isPrime(k) {
s = i + j + k
if isPrime(s) {
c++
if !countOnly {
fmt.Printf(f, c, i, j, k, s)
}
}
}
}
}
}
}
}
return c
}

func main() {
fmt.Println("Unique prime triples under 30 which sum to a prime:")
strangePrimes(29, false)
cs := commatize(strangePrimes(999, true))
fmt.Printf("\nThere are %s unique prime triples under 1,000 which sum to a prime.\n", cs)
}</lang>

{{out}}
<pre>
Unique prime triples under 30 which sum to a prime:
1: 3 + 5 + 11 = 19
2: 3 + 5 + 23 = 31
3: 3 + 5 + 29 = 37
4: 3 + 7 + 13 = 23
5: 3 + 7 + 19 = 29
6: 3 + 11 + 17 = 31
7: 3 + 11 + 23 = 37
8: 3 + 11 + 29 = 43
9: 3 + 17 + 23 = 43
10: 5 + 7 + 11 = 23
11: 5 + 7 + 17 = 29
12: 5 + 7 + 19 = 31
13: 5 + 7 + 29 = 41
14: 5 + 11 + 13 = 29
15: 5 + 13 + 19 = 37
16: 5 + 13 + 23 = 41
17: 5 + 13 + 29 = 47
18: 5 + 17 + 19 = 41
19: 5 + 19 + 23 = 47
20: 5 + 19 + 29 = 53
21: 7 + 11 + 13 = 31
22: 7 + 11 + 19 = 37
23: 7 + 11 + 23 = 41
24: 7 + 11 + 29 = 47
25: 7 + 13 + 17 = 37
26: 7 + 13 + 23 = 43
27: 7 + 17 + 19 = 43
28: 7 + 17 + 23 = 47
29: 7 + 17 + 29 = 53
30: 7 + 23 + 29 = 59
31: 11 + 13 + 17 = 41
32: 11 + 13 + 19 = 43
33: 11 + 13 + 23 = 47
34: 11 + 13 + 29 = 53
35: 11 + 17 + 19 = 47
36: 11 + 19 + 23 = 53
37: 11 + 19 + 29 = 59
38: 13 + 17 + 23 = 53
39: 13 + 17 + 29 = 59
40: 13 + 19 + 29 = 61
41: 17 + 19 + 23 = 59
42: 19 + 23 + 29 = 71

There are 241,580 unique prime triples under 1,000 which sum to a prime.
</pre>
</pre>