为什么第八个测试点错了

P1217 [USACO1.5] 回文质数 Prime Palindromes

lamb1228 @ 2024-09-21 16:08:43

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// 检查一个数是否为回文数和素数
int ok(int n)
{
    // 如果 n 是偶数,它既不可能是素数也不可能是回文数(除了2)
    if (n % 2 == 0)
        return 0;

    // 检查是否为回文数
    int hh = 0, o = n, temp;
    while (n > 0)
    {
        temp = n % 10;
        hh = hh * 10 + temp;
        n /= 10;
    }
    if (o != hh)
        return 0;

    // 检查是否为素数
    int ss = sqrt(o);
    for (int d = 3; d <= ss; d += 2)
    {
        if (o % d == 0)
            return 0;
    }

    return 1;
}

int main()
{
    int a, b;
    int count = 0;

    // 读取输入值
    scanf("%d %d", &a, &b);

    // 动态分配内存来存储符合条件的数字
    int *hhss = (int *)malloc((b - a) * sizeof(int));
    // 寻找并打印符合条件的数字
    for (int i = a; i < b; i++)
    {
        if (ok(i))
        {
            printf("%d\n", i);
            hhss[count++] = i;
        }
    }

    free(hhss);

    return 0;
}

|