大佬看看哪里错了
查看原帖
大佬看看哪里错了
818226
alma楼主2022/10/9 15:23

求助:55分,4个AC,剩下全是WA:

#include<iostream>
#include<cmath>

using namespace std;

int IsPal(int n);

int IsPri(int n);

int digit(int n);

int main() {
    int a, b;
    cin >> a >> b;
    if (b > 10000000)b = 10000000;//偶数位回文数:非素数
    int i = a;
    int di = 0;
    while (i <= b) {
        if (i == 5)cout << i++ << endl;
        else if (i == 7)cout << i++ << endl;
        else if (i == 11)cout << i++ << endl;
        else if (i > 11) {
            di = digit(i);//偶数位回文数:非素数
            if (di % 2 == 0)i = pow(10, di);
            
            else {
                if (i % 2 == 0)i++;//偶数跳过
                else {
                    if (IsPal(i)) {
                        if (IsPri(i))cout << i << endl;
                    }
                    i = i + 2;//奇数+2,仍未奇数
                }
            }
            
        } else i++;
    }

    return 0;
}

int IsPal(int n) {
    int temp = n, i = 0;
    while (temp != 0) {
        i = i * 10 + temp % 10;
        temp /= 10;
    }
    if (i == n)return 1;
    else return 0;
}

int IsPri(int n) {
    int i = 2, max = ceil(sqrt(n));
    while (i <= max) {
        if (n % i == 0)break;
        i++;
    }
    if (i >= max)return 1;
    else return 0;
}

int digit(int n) {
    int temp = n, di = 0;
    while (temp) {
        di++;
        temp /= 10;
    }
    return di;
}
2022/10/9 15:23
加载中...