判断回文素数

首先是如何判断回文数, 回文数从前面看和从后面看都是一样的,判断的方法就是把这个数换成字符型, 使用sprint(s, "%d", n)(s是字符数组),然后计算这个数的个数, 使用strlen函数,(记得要#include<string.h>), 然后循环一半,观察字符是否相等;然后判断素数,就将数从2循环到sqrt(n)即可,判断是否可以除去。

具体代码

//判断是否是素数

//判断是否是回文数

//寻找回文质数

//带入数值

#include<stdio.h>

#include<math.h>

#include<stdbool.h>

#include<string.h>

//判断是否是素数

bool is_prime(long int n)

{

    long int i;

    for (i = 2; i < sqrt(n); i ++)

        if (n % i == 0) return false;

    return true;

}

bool is_pal(long int n)

{

    char a[20];

    long int i;

    sprintf(a, "%ld", n);

    long int num = strlen(a);

    for (i = 0; i < num / 2; i ++)

    {if (a[i] != a[num - i -1]) return false;}

    return true;

}

void print_prime_pal(long int a, long b)

{

    long i, j;

    for (i = a; i <= b; i ++)

        if (is_prime(i) && is_pal(i)) printf("%ld\n", i);

}

int main()

{

    long a, b;

    scanf("%ld%ld", &a, &b);

    print_prime_pal(a, b);

    return 0;

}

当然, 回文数的判定中也不把它当成字符,以整数来运算

即:

do{

        int a[20], flag = 0;

        a[flag ++] = n % 10

        n = n / 10;}while(n > 0);        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值