/* Right-truncatable primes:
A zerofree number n is called right truncatable if n and all numbers
obtained by successively removing the rightmost digits are prime.
There are exactly 83 right truncatable primes in base 10.
The first few are 2, 3, 5, 7, 23, 29, 31, 37, 53, 59, 71, 73, 79, 233,
239, 293, 311, 313, 317, 373, 379, 593, 599, ... (Sloane's A024770),
the largest being the 8-digit number 73939133 (Angell and Godwin 1977).
-------------------
Weisstein, Eric W. "Truncatable Prime." From MathWorld--A Wolfram Web
Resource.
http://mathworld.wolfram.com/TruncatablePrime.html */
#include <stdio.h>
typedef unsigned long int uint;
uint isprime(uint p) {
if (p<2) return 0;
if (p<4) return 1;
if (0==p%2 || 0==p%3) return 0;
uint i=5;
while (i*i <=p ){
if (p%i==0) return 0;
i+=2;
if (p%i==0) return 0;
i+=4; }
return 1;
}
uint sp[]={1,3,5,7,9,0};
uint k=0;
void x(uint r){
uint i;
if (isprime(r)){
printf("%3d %9d\n", ++k, r);
for (i=0; sp
!=0; i++)
x(r*10 + sp); }
}
int main(){
x(2); x(3); x(5); x(7);
getchar();
return 0;
}