Monday 21 January 2013

Circular Prime

 /* C code to check whether a number obtained by circularly shifting its digits is prime or not*/
#include <stdio.h>
//function for finding the number of digits in a given number
int get_num_digits(n)
{
    int k = 0;
    while (n!=0)
    {
        n = n/10;
        k++;
    }
    return k;
}

//function for finding a circular number
int get_shifted_num(n)
{

    int i , d, k = 1 , last_digit , new_num;

    d= get_num_digits(n);

    for (i=1 ; i<=(d-1); i++)
        k = k*10;

    last_digit = n/k;

    new_num = (n - last_digit*k)*10 + last_digit;
    return new_num;
}

//function to check whether a number is prime or not
 is_prime(n)
{
    int  i , circular_num =n;   
    for (i=1; i<=circular_num/2 ; i++)
        if (circular_num%(i+1) == 0)
                return  0 ;
    return 1;           
}

int main ()
{
    int i , n , d ,  circular_num , z;

    printf("enter a number : ");
    scanf("%d", &n);

    d = get_num_digits(n);
   
    circular_num =n;

    for (i = 1; i<=d ; i++)
    {
        printf ("shifted no. is  : %d\n", circular_num);
        z = is_prime(circular_num);

        if (z==1)
            printf ("%d is prime\n\n", circular_num);
        else
            printf ("%d is not prime: \n\n" , circular_num);

        circular_num = get_shifted_num(circular_num);
    }
    return 0;
}

1 comment:

  1. This code is frequently ask in any examination Check Number is Prime or not in C++ is very simple and easy to write. Using for loop and if else we can write this code. Your code is very simple and easy to understand. Thanks for sharing this article.

    ReplyDelete