Substring primes: Difference between revisions

Added Go
m (→‎{{header|REXX}}: changed some comments, simplified the code.)
(Added Go)
Line 259:
print</lang>
{{out}}<pre>2 3 5 7 23 37 53 73 373</pre>
 
=={{header|Go}}==
{{trans|Wren}}
{{libheader|Go-rcu}}
===Using a limit===
<lang go>package main
 
import (
"fmt"
"rcu"
)
 
func main() {
primes := rcu.Primes(499)
var sprimes []int
for _, p := range primes {
digits := rcu.Digits(p, 10)
var b1 = true
for _, d := range digits {
if !rcu.IsPrime(d) {
b1 = false
break
}
}
if b1 {
if len(digits) < 3 {
sprimes = append(sprimes, p)
} else {
b2 := rcu.IsPrime(digits[0]*10 + digits[1])
b3 := rcu.IsPrime(digits[1]*10 + digits[2])
if b2 && b3 {
sprimes = append(sprimes, p)
}
}
}
}
fmt.Println("Found", len(sprimes), "primes < 500 where all substrings are also primes, namely:")
fmt.Println(sprimes)
}</lang>
 
{{out}}
<pre>
Found 9 primes < 500 where all substrings are also primes, namely:
[2 3 5 7 23 37 53 73 373]
</pre>
<br>
===Advanced===
<lang go>package main
 
import (
"fmt"
"rcu"
)
 
func main() {
results := []int{2, 3, 5, 7} // number must begin with a prime digit
odigits := []int{3, 7} // other digits must be 3 or 7
var discarded []int
tests := 4 // i.e. to obtain initial results in the first place
 
// check 2 digit numbers or greater
// note that 'results' is a moving feast. If the loop eventually terminates that's all there are.
for i := 0; i < len(results); i++ {
r := results[i]
for _, od := range odigits {
// the last digit of r and od must be different otherwise number would be divisible by 11
if (r % 10) != od {
n := r*10 + od
if rcu.IsPrime(n) {
results = append(results, n)
} else {
discarded = append(discarded, n)
}
tests++
}
}
}
fmt.Println("There are", len(results), "primes where all substrings are also primes, namely:")
fmt.Println(results)
fmt.Println("\nThe following numbers were also tested for primality but found to be composite:")
fmt.Println(discarded)
fmt.Println("\nTotal number of primality tests =", tests)
}</lang>
 
{{out}}
<pre>
There are 9 primes where all substrings are also primes, namely:
[2 3 5 7 23 37 53 73 373]
 
The following numbers were also tested for primality but found to be composite:
[27 57 237 537 737 3737]
 
Total number of primality tests = 15
</pre>
 
=={{header|Julia}}==
9,476

edits