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> |
||