C_回文素数

作者在 2007-10-05 04:39:00 发布以下内容

求不超过1000的回文素数。

*问题分析与算法设计
  所谓回文素数是指,对一个整数n从左向右和从由向左读其结果值相同且是素数,即称n为回文素数。所以本题的重点不是判断素数的方法,而是求回文整数。构造回文数的方法很多,这里仅介绍一种最简单的算法。实现思路是先求出一个整数的回文数,再判断是否为素数。
  不超过1000的回文数包括二位和三位的回文数,我们采用穷举法来构造一个整数并求与其对应的反序数,若整数与其反序数相等,则该整数是回文数。

*程序说明与注释
#include<stdio.h>

int a(int n)
int main()
{
int i,j,t,k,s;
printf("Following are palindrome primes not greater than 1000:\n");
for(i=0;i<=9;++i) //穷举第一位
for(j=0;j<=9;++j) //穷举第二位
for(k=0;k<=9;++k) //穷举第三位
{
s=i*100 + j*10 + k; //计算组成的整数
t=ik*100 + j*10 + i; //计算对应的反序数
if(i == 0 && j==0) //处理整数的前两位为0的情况
{
t/100;
}
else if(i ==0) //处理整数的第一位为0的情况
{
t/10;
}
if(s.10 && s==t && a(s)) //若大于10且为回文素数,则输出
{
printf("%d\t",s);
}
}
return 0;
}

//判断参数n是否为素数
int a(int n)
{
int i;
for(i=2;i<(n-1)/2;+=i)
{
if(n%i == 0)
return 0;
}

return 1;

}

*运行结果

Following are palindrome primes not greater than 1000:
11 101 131 151 181 191 313 353
373 383 727 787 797 919 929

*思考题

优化生成回文数的算法。

文章评论,共0条
游客请输入验证码
浏览475293次