#include <stdio.h>
#include <windows.h>
#include <math.h>
bool IsPrime(unsigned n)
{
if (n<2)
{
return false;
}
for(unsigned i=2;i<n/2+1;++i)
{
if ( 0 == n % i )
{
return false;
}
}
return true;
}
void main()
{
int num = 0;
printf("Input number:\n");
scanf("%d",&num);
unsigned long starts, stop;
starts = GetTickCount();
int a[8]={0};
int result = 0;
int j = 0;
int mynum = 0;
int k=0;
for (int i=7;i>=0;i--)
{
a[i] = num%10;
num = num/10;
j++;
if (num==0)
{
break;
}
}
int start = i;
for (int n=j;n>0;n--)
{
for (int mm = 0;mm<j-n+1;mm++)
{
mynum = 0;
k = 0;
for (int ss = 0;ss<n;ss++)
{
mynum = mynum*10+a[mm+start+k];
k++;
}
if (IsPrime(mynum))
{
if (result==0)
{
result = mynum;
}
else
{
if(mynum>result)
result = mynum;
}
}
}
if (result!=0)
{
int ddd = result/pow(10,n-1);
if(ddd !=0)
{
printf("%d\n",result);
break;
}
else
continue;
}
}
if (result == 0)
printf("invalid\n");
stop = GetTickCount();
printf("time: %lld ms\n", stop - starts);
}