逆序D进制判断是否是素数
有一点需要注意:0和1都不是素数!!!!!!!!!!!!!
还有,如果输入的十进制N不是素数,需要输出No,,,第一次这边被坑了。。。。
#include <bits/stdc++.h>
using namespace std;
bool is_primer(int N) {
if(N < 2) { // 首先排除0 1
return false;
}
int n = sqrt(N);
for(int i = 2; i <= n; ++i) {
if(N % i == 0) {
return false;
}
}
return true;
}
int main() {
int N, D;
while(cin >> N && N >= 0) {
cin >> D;
queue<int>Q;
int sum = N;
while(sum != 0) {
Q.push(sum % D);
sum /= D;
}
sum = 0;
while(!Q.empty()) {
sum = sum * D + Q.front();
Q.pop();
}
if(is_primer(N) && is_primer(sum)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
}
return 0;
}