回文素数

/*

时间限制:1秒 空间限制:32768K 热度指数:5113
算法知识视频讲解
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

题目描述

如果一个整数只能被1和自己整除,就称这个数是素数。
如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666
如果一个数字既是素数也是回文数,就称这个数是回文素数
牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。

输入描述:

输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)

输出描述:

输出一个整数,表示区间内回文素数个数。
示例1

输入

复制
100 150

输出

复制
2

*/

 

//回文素数
//https://www.nowcoder.com/practice/4802faa9afb54e458b93ed372e180f5c?tpId=90&tqId=30793&rp=10&ru=%2Factivity%2Foj&qru=%2Fta%2F2018test%2Fquestion-ranking&tPage=1
#include<stdio.h>
#include<math.h>
int exchange(int a);
int prime(int a);
int main(int argc,char *argv[])
{
    int m,n,i;
    int cnt=0;
    scanf("%d %d",&m,&n);
    for(i=m;i<=n;i++)
    {
        if(i==exchange(i)&&prime(i)==1)
        {
            //printf("%d %d\n",i,prime(i));
            cnt++;
        }
    }
    if(m==1)
    {
        cnt--;
    }
    printf("%d",cnt);
    return 0;
}
int exchange(int a)
{
    int t;
    int num=0;
    while(a>0)
    {
        t=a%10;
        num=num*10+t;
        a/=10;
    }
    a=num;
    return a;
}
int prime(int a)
{
    int i;
    int t=1;
    for(i=2;i<=sqrt(a);i++)
    {
        if(i==1)
        {
            break;
        }
        if(a%i==0)
        {
            t=0;
            break;
        }
    }
    return t;
}

posted on 2019-03-30 17:14  redOrange01  阅读(280)  评论(0编辑  收藏  举报