每日一题c语言,又卡壳了,请教大家一下

img


c初学c语言才学会怎么判断素数,但是又得要求是回文数,就卡住了,感觉目前学的太少太少,碰到题就卡,思路不清晰,请教大家,谢谢

供参考:

#include<stdio.h>
int isPrime(int n)  //判断素数
{
    int i;
    if (n < 4)    return n > 1;
    if (!(n & 1))     return 0; //排除偶数
    for (i = 2; i * i <= n; i++)
        if (n % i == 0) return 0;
    return  1;
}
int ispalindrome(int n) //判断回文
{
    int t = n, k = 0;
    while (t) {
        k = k * 10 + t % 10;
        t /= 10;
    }
    return k == n;
}
int main()
{
    int s = 0, max = 0, i;
    for (i = 1000; i > 0; i--) {
        if (isPrime(i) && ispalindrome(i)) {
            if (max == 0) max = i;
            s++;
        }
    }
    printf("max=%d, count=%d", max, s);
    return 0;
}

定义一个数组a,从1-1000循环找出素数放进去,并记录个数n,再定义数组b,在数组a里从1-n循环找回文数放到数组b,并记录个数m,第一个问题在b中找最大值就可以了,第二个问题答案就是m