Truncatable primes: Difference between revisions

Content added Content deleted
Line 839: Line 839:
[
[
((n mod:f == 0) || (n mod:(f + 2) == 0))
((n mod:f == 0) || (n mod:(f + 2) == 0))
? [ ^ false. ].
? [ ^ false. ].
f := f + 6.
f := f + 6.
].
].
^ true.
^ true.
]
]
Line 850: Line 847:
#method is &rightTruncatable
#method is &rightTruncatable
[
[
#var(type:int)n := self int.
#var(type:int)n := self int.
#loop (n != 0)?
#loop (n != 0)?
[
[
(n is &prime)
(n is &prime)
! [ ^ false. ].
! [ ^ false. ].
n := n / 10.
n := n / 10.
].
].
Line 865: Line 860:
[
[
#var(type:int)n := self int.
#var(type:int)n := self int.
#var(type:int)tens := 1.
#var(type:int)tens := 1.
#loop (tens < n)
#loop (tens < n)
? [ tens := tens * 10. ].
? [ tens := tens * 10. ].
Line 874: Line 868:
(n is &prime)
(n is &prime)
! [ ^ false. ].
! [ ^ false. ].

tens := tens / 10.
tens := tens / 10.
n := n - (n / tens * tens).
n := n - (n / tens * tens).
Line 887: Line 880:
#var max_lt := 0.
#var max_lt := 0.
#var max_rt := 0.
#var max_rt := 0.

#loop ((max_lt == 0) || (max_rt == 0))?
#loop ((max_lt == 0) || (max_rt == 0))?
[
[
Line 893: Line 885:
[
[
((max_lt == 0) and:[ n is &leftTruncatable ])
((max_lt == 0) and:[ n is &leftTruncatable ])
? [
? [ max_lt := n. ].
max_lt := n.
].
((max_rt == 0) and:[ n is &rightTruncatable ])
((max_rt == 0) and:[ n is &rightTruncatable ])
? [
? [ max_rt := n. ].
max_rt := n.
].
].
].
n := n - 1.
n := n - 1.