C语言66分求解

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

mzk_c_yy @ 2023-08-15 15:44:34

#include <stdio.h>

int is_prime(int i) {
    for (int n = 2; n * n <= i; n++) {
        if (i % n == 0) {
            return 0;
        }
    }
    return 1;
}

int is_palindrome(int i) {
    int reverse = 0;
    int n = i;
    while (i > 0) {
        int left = i % 10;
        reverse = reverse * 10 + left;
        i /= 10;
    }
    return (n == reverse);
}

int is_number(int i) {
    return (is_prime(i) && is_palindrome(i));
}

int main() {
    int a=0;
    int b=0;
    scanf("%d%d",&a,&b);
    for (int i = a; i <= b; i++) {
        if (is_number(i)) {
            printf("%d\n", i);
        }
    }
    return 0;
}

by Rainber @ 2023-08-15 15:54:31

这题要用素数筛吧


by mzk_c_yy @ 2023-08-15 16:10:39

@BillsgWu is_prime(int i)就是在选素数


by Rainber @ 2023-08-15 16:16:00

@mzk_c_yy 素数筛法,不是判断素数,可以搜一下


by mzk_c_yy @ 2023-08-15 16:31:54

我在这个函数```c int is_number(int i) { return (is_prime(i) && is_palindrome(i)); }


只有是素数并且是回文数才会返回呀

by Rainber @ 2023-08-15 19:56:56

欧拉筛法,实在不会埃式筛法也行,不是你想的那个,还有,下次找我at我一下


by Rainber @ 2023-08-15 20:11:59

@mzk_c_yy


|