神奇的回文素数

任意整数i,当从左向右读与从右向左读是相同的,且为素数时,则为回文素数。请问1000之内的所有回文素数有哪些?

首先应该判断是否为素数,然后判断该素数是两位数还是三位数,若是两位数,需判断个位与十位的数字是否相同,若是三位数则需判断个位上和百位上的数字是否相同。

 

int ss(int i) /*自定义函数判断是否为素数*/

{

    int j;

    if (i <= 1) /*小于等于1的数不是素数*/

        return 0;

    if (i == 2) /*2是素数*/

        return 1;

    for (j = 2; j < i; j++) /*对大于2的数进行判断*/

    {

        if (i % j == 0)

            return 0;

        else if (i != j + 1)

            continue;

        else

            return 1;

    }

}

void main()

{

    int i;

    for (i = 10; i < 1000; i++)

        if (ss(i) == 1) /*判断是否是素数*/

            if (i / 100 == 0) /*判断是否是两位数*/

            {

                if (i / 10 == i % 10) /*判断十位和个位是否相同*/

                    printf("%5d", i);

            }

            else /*针对3位素数*/

                if (i / 100 == i % 10) /*判断百位和个位是否相同*/

                    printf("%5d", i);

}

 

你可能感兴趣的:(c语言)