【題解】ZeroJudge d387: 10235 – Simply Emirp

【題解】https://zerojudge.tw/ShowProblem?problemid=d387
【解題想法】

  • (Line 6~13) 建立質數表
  • (Line 18~22) 把質數倒轉過來
#include <iostream>
using namespace std;
int p[1000005];

int main() {
    p[1] = 1;
    for (int i = 2; i < 1000005; i++){
        if (p[i] == 0){
            for (int j = i+i; j < 1000005; j+=i){
                p[j] = 1;
            }
        }
    }
    int N, N1, N2;
    while (cin >> N){
        N1 = N;
        N2 = 0;
        while (N1){
            N2 *= 10;
            N2 += N1 % 10;
            N1 /= 10;
        }
        if (p[N]) cout << N << " is not prime.\n";
        else if (N2 != N && p[N2] == 0) cout << N << " is emirp.\n";
        else cout << N << " is prime.\n";
    }
    return 0;
}
分享本文 Share with friends