您的位置:首页 > 编程语言

问题五十四: 输出10000以内的所有回文素数。

2013-04-17 20:07 393 查看
/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)
* 程序的版权和版本声明部分
* All rights reserved.
* 文件名称: txt.c
* 作    者: liuyongshui
* 问    题:  输出10000以内的所有回文素数
* 问题来源:  http://blog.csdn.net/sxhelijian/article/details/8010501 * 完成日期: 2013 年4 月17日
* 版 本 号: V1.0
*/

#include <stdio.h>

int  isPrimer(int n);      //是素数
int  isPalindrome(int m);  //是回文数

int main()
{
int i;

for(i=2; i<10000; i++)
{
if( isPrimer(i) && isPalindrome( isPrimer(i) ) )
{
printf("是回文素数有:%d\n", i);
}
}

return 0;
}

int isPrimer(int n)
{
int i;
int flag;

for(i=2; i<=n/2; i++)
{
flag=1;
if(n%i==0)   //检查是否为素数
{
flag=0;   //不是素数,flag=0
}
}

if(flag)
{
return n;
}
else
{
return 0;
}
}

int isPalindrome(int m)
{
int i=0;
int j;
int num;
int a[5];

if(m>=10)    //检测大于10的回文数
{
num=m;
while(m)  //m==0时结束,次循环吧m的每一位存入数组中
{
a[i++]=m%10;
m=m/10;
}

for(j=i-1; j>=0; j--)    //检测是否为回文
{
if(a[j]!= num%10)
{
return 0;     //若有不同返回0
}
num=num/10;
}

return 1;
}

else   //小于10,肯定不是回文数
{
return 0;
}
}


  局部图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程语言