Problem 35


The number, 197, is called a circular prime because all rotations of the digits: 197, 971, and 719, are themselves prime.</p>

There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97.</p>

How many circular primes are there below one million?</p> </div>

Answer:</div></td>
55</b></td></tr></tbody></table>#include
#include

#include
#define MAX 1e6
int isprime(long n)
{
    int i=3;
    if(n==2||n==3||n==5||n==7)return 1;
    if(n%2==0)return 0;
    for(i=3;i*i<=n;i+=2)
        if(n%i==0)return 0;
    return 1;
}
int dig(long i)
{
    int n=0;
    while(i)
    {
        i/=10;
        n++;
    }
    return n;
}

int *rotations(long i,int m)
{
    int j=0,carry,tmp;
    int *p=(int*)malloc((m-1)*sizeof(long));
    tmp=i;
    for(j=0;j    {
        carry=pow(10,m-1);
        p[j]=tmp%carry*10+tmp/carry;
        tmp=p[j];
    }
    return p;
}
int main (int argc, char const* argv[]) {
    int j,flag=1,i=0,k;
    long n,sum;
    int *tmp=NULL;
    for(n=2;n    {
        j=dig(n);
        tmp=rotations(n,j);
        for(k=0,flag=1;k             if(!isprime(tmp[k]))
                 flag=0;
        if(flag&&isprime(n))
            i++;
    }
    printf("%dn",i);
    return 0;
}
</div>