Truncatable primes: Difference between revisions
Content added Content deleted
m (→{{header|zkl}}: update) |
|||
Line 825: | Line 825: | ||
=={{header|Elena}}== |
=={{header|Elena}}== |
||
<lang elena>#import |
<lang elena>#import extensions. |
||
#import extensions. |
|||
const MAXN = 1000000. |
|||
extension mathOp |
|||
{ |
{ |
||
is &prime |
|||
[ |
[ |
||
int n := self int. |
|||
(n < 2) |
if (n < 2) [ ^ false. ]. |
||
(n < 4) |
if (n < 4) [ ^ true. ]. |
||
(n mod:2 == 0) |
if (n mod:2 == 0) [ ^ false. ]. |
||
(n < 9) |
if (n < 9) [ ^ true. ]. |
||
(n mod:3 == 0) |
if (n mod:3 == 0) [ ^ false. ]. |
||
int r := n sqrt. |
|||
int f := 5. |
|||
while (f <= r) |
|||
[ |
[ |
||
((n mod:f == 0) || (n mod:(f + 2) == 0)) |
if ((n mod:f == 0) || (n mod:(f + 2) == 0)) |
||
[ ^ false. ]. |
|||
f := f + 6. |
|||
]. |
|||
⚫ | |||
^ true. |
^ true. |
||
] |
] |
||
is &rightTruncatable |
|||
[ |
[ |
||
int n := self. |
|||
while (n != 0) |
|||
[ |
[ |
||
(n is &prime) |
ifnot (n is &prime) |
||
[ ^ false. ]. |
|||
n := n / 10. |
n := n / 10. |
||
]. |
]. |
||
^ true. |
^ true. |
||
] |
] |
||
is &leftTruncatable |
|||
[ |
[ |
||
int n := self. |
|||
int tens := 1. |
|||
while (tens < n) |
|||
[ tens := tens * 10. ]. |
|||
while (n != 0) |
|||
[ |
[ |
||
(n is &prime) |
ifnot (n is &prime) |
||
[ ^ false. ]. |
|||
tens := tens / 10. |
tens := tens / 10. |
||
n := n - (n / tens * tens). |
n := n - (n / tens * tens). |
||
]. |
]. |
||
^ true. |
^ true. |
||
] |
] |
||
} |
} |
||
program = |
|||
[ |
[ |
||
var n := MAXN. |
|||
var max_lt := 0. |
|||
var max_rt := 0. |
|||
while ((max_lt == 0) || (max_rt == 0)) |
|||
[ |
[ |
||
(n literal indexOf:"0" == -1) ? |
(n literal indexOf:"0" == -1) ? |
||
[ |
[ |
||
((max_lt == 0) and:[ n is &leftTruncatable ]) |
if ((max_lt == 0) and:[ n is &leftTruncatable ]) |
||
[ |
|||
max_lt := n. |
|||
]. |
|||
if ((max_rt == 0) and:[ n is &rightTruncatable ]) |
|||
[ |
|||
max_rt := n. |
|||
]. |
|||
]. |
|||
n := n - 1. |
n := n - 1. |
||
]. |
]. |
||
⚫ | |||
console writeLine:"Largest truncable left is ":max_lt. |
console writeLine:"Largest truncable left is ":max_lt. |
||
console writeLine:"Largest truncable right is ":max_rt. |
console writeLine:"Largest truncable right is ":max_rt. |
||
console readChar. |
|||
].</lang> |
].</lang> |
||
{{out}} |
{{out}} |