10235 - Simply Emirp

#include<stdio.h>
#include<math.h>
#define max 1000001
long long int arr[max];
int sieve()
{
    int i,j;
    for(i=2; i<=max; i++)
    {
        arr[i]=1;
    }
    for(i=2; i<=sqrt(max); i++)
    {
        for(j=2; i*j<=max; j++)
        {
            arr[i*j]=0;
        }
    }
}
long long int reverse1(long long int N)
{
    long long int reverse=0;
    while(N!=0)
    {
        reverse=reverse*10+(N%10);
        N=N/10;
    }
    return reverse;
}
int main()
{
    long long int a,b,c,N,reverse;
    sieve();
    while(scanf("%lld",&N)==1)
    {
        c=N;
        reverse=reverse1(N);
        a=0;
        if(arr[N]==1)
        {
            a++;
        }
        b=0;
        if(arr[reverse]==1)
        {
            b++;
        }
        if(a==0)
        {
            printf("%lld is not prime.\n",c);
        }
        else if((N==reverse)||(a>0&&b==0))
        {
            printf("%lld is prime.\n",c);
        }
        else
        {
            printf("%lld is emirp.\n",c);
        }
    }
    return 0;
}


0 comments: (+add yours?)