A truncatable prime is a prime number that when you successively remove digits from one end of the prime, you are left with a new prime number.



Examples

The number 997 is called a left-truncatable prime as the numbers 997, 97, and 7 are all prime.

The number 7393 is a right-truncatable prime as the numbers 7393, 739, 73, and 7 formed by removing digits from its right are also prime.

No zeroes are allowed in truncatable primes.



Task

The task is to find the largest left-truncatable and right-truncatable primes less than one million (base 10 is implied).



Related tasks
 
 Find largest left truncatable prime in a given base
 Sieve of Eratosthenes


See also

 Truncatable Prime from MathWorld.]


const million=0d1_000_000;
 
var pTable=Data(million+1,Int).fill(0);	// actually bytes, all zero
primes:=Utils.Generator(Import("sieve").postponed_sieve);
while((p:=primes.next())<million){ pTable[p]=1; }
 
fcn rightTrunc(n){
   while(n){ if(not pTable[n]) return(False); n/=10; }
   True
}
fcn leftTrunc(n){  // 999,907 is not allowed
   ns:=n.toString(); if (ns.holds("0")) return(False);
   while(ns){ if(not pTable[ns]) return(False); ns=ns[1,*]; }
   True
}