/*
主题:可逆素数是指将一个素数的各位数字顺序地倒过来,
构成的反序仍然是素数,按以上要求所有的四位素数
作者:karl
邮箱:nixindong@hotmai.com
开发环境:Visual Studio
开发语言:C
日期:2012-06-14
*/
#include <stdio.h>
#include <math.h>
typedef enum{TRUE = 1, FALSE = 0}boolean;
boolean prime(int value);
int reverse(int source);
int main(void)
{
int i, counter = 0;
for (i = 1000; i <= 9999; i++)
{
if (prime(i) && prime(reverse(i)))
{
printf("%6d", i);
counter++;
if (counter % 10 == 0)
{
putchar('\n');
}
}
}
return 0;
}
/*
函数名称:prime
函数功能:判断一个整数是否是素数
函数参数:
value:需要判断的值
返回值:类型(boolean)
TRUE:是素数
FALSE:不是素数
*/
boolean prime(int value)
{
int j;
for (j = 2; j <= (int)sqrt(value); j++)
{
if (value % j == 0)
{
return FALSE;
}
}
return TRUE;
}
int reverse(int source)
{
int thou, hun, ten, digits;
//取出原来的个位、十位、百位以及千位
digits = source % 10;
ten = (int)(source % 100) / 10;
hun = (int)(source % 1000) / 100;
thou = (int)source / 1000;
return digits * 1000 + ten * 100 + hun * 10 + thou;
}
运行结果: