1.2s超时,大佬求调
查看原帖
1.2s超时,大佬求调
1428624
I_love_zz楼主2024/9/24 21:21

重要的事情!!!

本题有部分是直接ctrl+c搞到的
所以不代表我这个辣鸡的实力
我很菜的
所以求大佬给出修改建议!!
感谢!!!

ctrl+c的代码~

#include <iostream>
#include<algorithm>
#include<vector>
#include<math.h>
using namespace std;
bool isp(int num) {
    if (num < 0) {
        return false; 
    }
    int originalNum = num;
    int reversedNum = 0;

    while (num > 0) {
        reversedNum = reversedNum * 10 + num % 10;
        num /= 10;
    }

    return originalNum == reversedNum;
}

std::vector<bool> sieveOfEratosthenes(int n) {
    std::vector<bool> isPrime(n+1, true);
    isPrime[0] = isPrime[1] = false;
    int sqrtN = sqrt(n);
    for (int i = 2; i <= sqrtN; i++) {
        if (isPrime[i]) {
            for (int j = i*i; j <= n; j += i) {
                isPrime[j] = false;
            }
        }
    }
    return isPrime;
}

bool isPrime(int n) {
    std::vector<bool> primes = sieveOfEratosthenes(n);
    return primes[n];
}

int main() {
    int a = 0, b = 0;
    cin >> a >> b;
    for (int i = a; i <= b; i++) {
        if (i % 2 != 0) {
            if (isp(i)&&isPrime(i)) {
                printf("%d\n", i);
            }
        }
    }
    return 0;
}
2024/9/24 21:21
加载中...