B3939 [GESP样题 四级] 绝对素数 题解
原题:点我点我
题目大意:
一个 a a a 至 b b b 范围内的数,如果本身与数字位置调换后依旧质数,就输出。
题目思路:
先写一个质数判断函数。
什么是质数?
质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他 因数 的自然数。
质数函数怎么写?
特判:
一般是先判断是否小于等于
1
,若是,则直接返回是质数
,否则继续其他数:
判断是否满足[质数的条件][质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。]即可
完整的判断质数代码:
bool sushu(int n) { if (n <= 1) return false; for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true; }
然后把个位十位调换后继续判断是否质数
代码:
bool sushu(int ss) {
if (ss <= 1) return false;
for (int i = 2; i * i <= ss; i++) {
if (ss % i == 0) {
return false;
}
}
string alr = to_string(ss);
reverse(alr.begin(), alr.end());
ss = stoi(alr);
for (int i = 2; i * i <= ss; i++){
if (ss % i == 0){
return false;
}
}
return true;
}
void solve() {
int a, b;
cin >> a >> b;
for(int i = a; i <= b; i++) {
if(sushu(i)) {
cout << i << endl;
}
}
}