#include <stdio.h>
int is_prime(unsigned x)
{
unsigned q;
if(!(x&1))
return x==2;
if(x==1)
return 0;
for(q=3; q*q<=x; q+=2)
if(!(x%q))
return 0;
return 1;
}
unsigned is_multiprime(unsigned x)
{
unsigned q;
if(!is_prime(x))
return x==1;
if(x<10)
return 1;
for(q=10; q<x; q*=10)
if(is_multiprime(x/q) && is_multiprime(x%q))
return q;
return 0;
}
int digits(unsigned x)
{
unsigned res;
for(res=0; x; ++res)
x/=10;
return res;
}
int main(void)
{
unsigned q, base;
q=22307; //for(q=0; q<10000; ++q)
if(base=is_multiprime(q) /*assignment*/)
printf("%d as %d %.*d\n", q, q/base, digits(base-1), q%base);
puts("Done.");
getchar();
return 0;
}