Circular primes: Difference between revisions

Content added Content deleted
(Forth version)
Line 2,059: Line 2,059:
=={{header|Ring}}==
=={{header|Ring}}==
<lang ring>
<lang ring>
see "working..." + nl
load "stdlib.ring"
see "First 19 circular numbers are:" + nl
n = 0
row = 0
Primes = []


while row < 19
limit = 20
n++
prim = 0
num = 0
aPrimes = []

while num < limit
flag = 1
flag = 1
prim = prim + 1
nStr = string(n)
primStr = string(prim)
lenStr = len(nStr)
for n = 1 to len(primStr)-1
for m = 1 to lenStr
str1 = substr(primStr,n+1,len(primStr)-n)
leftStr = left(nStr,m)
str2 = substr(primStr,1,n)
rightStr = right(nStr,lenStr-m)
primNew = str1 + str2
strOk = rightStr + leftStr
primNum = number(primNew)
nOk = number(strOk)
ind = find(Primes,nOk)
if isprime(primNum) and isprime(prim) and primNum >= prim and prim > 9
flag = 1
if ind < 1 and strOk != nStr
else
add(Primes,nOk)
ok
if not isprimeNumber(nOk) or ind > 0
flag = 0
flag = 0
exit
exit
ok
ok
next
next
if isprime(prim) and prim < 10
if flag = 1
flag = 1
row++
but not isprime(prim) and prim < 10
see "" + n + " "
flag = 0
if row%5 = 0
ok
see nl
if flag = 1
ok
num = num + 1
ok
add(aPrimes,prim)
ok
end
end


see "The first 19 circular primes are:" + nl
see nl + "done..." + nl
showarray(aPrimes)


func showarray(vect)
func isPrimeNumber(num)
if (num <= 1) return 0 ok
see "["
if (num % 2 = 0) and (num != 2) return 0 ok
svect = ""
for n = 1 to len(vect)
for i = 2 to sqrt(num)
svect = svect + vect[n] + ","
if (num % i = 0) return 0 ok
next
next
return 1
see left(svect, len(svect) - 1) + "]"
</lang>
</lang>
{{out}}
{{out}}
<pre>
<pre>
working...
The first 19 circular primes are:
First 19 circular numbers are:
[2,3,5,7,11,13,17,37,79,113,197,199,337,1193,3779,11939,19937,193939,199933]
2 3 5 7 11
13 17 37 79 113
197 199 337 1193 3779
11939 19937 193939 199933
done...
</pre>
</pre>