题目描述
这是上海计算机学会竞赛
P
11
P11
P11:双质数(
2020
2020
2020年
3
3
3月月赛 丙组
T
3
T3
T3)
标签:质数
题意:给定一个区间范围
[
a
,
b
]
[a,b]
[a,b],输出这个范围内所有的双质数(双质数指本身是质数,且去掉它个位数之后依旧是质数的数),如果一个都没有输出
N
o
n
e
None
None。(
1
<
=
a
<
=
b
<
=
1
0
6
,
b
−
a
<
=
2
⋅
1
0
5
1<=a<=b<=10^6,b-a<=2⋅10^5
1<=a<=b<=106,b−a<=2⋅105)
解决方案
题解: 直接枚举区间
[
a
,
b
]
[a,b]
[a,b],对区间内每个数和去掉它的个位数的数,做质数判定,做一个
f
l
a
g
flag
flag标记,判定一个都没有的情况。
代码:
#include <bits/stdc++.h>
using namespace std;
bool check(int x) { // 质数判定
if (x <= 1) return 0;
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) return 0;
}
return 1;
}
int main() {
int a, b, f = 0;
cin >> a >> b;
for (int i = a; i <= b; i++) {
if (check(i) && check(i / 10)) {
cout << i << endl;
f = 1;
}
}
if (f == 0) cout << "None";
return 0;
}