如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13. 给定两个正整数 A,B,请求出大于等于 A小于等于B的所有绝对素数。 输入 1行,包含两个正整数 A 和 B 输出若干行,每行一个绝对素数,从小到大输出
时间: 2023-12-01 09:02:58 浏览: 94
一个素数,当她的数字位置对换以后仍为素数,这样的数称为绝对素数。
5星 · 资源好评率100%
以下是 Python 的代码实现,使用了筛法求素数:
```python
def sieve(n):
is_prime = [True] * (n + 1) # 初始化为全是素数
is_prime[0] = is_prime[1] = False # 0 和 1 不是素数
for i in range(2, n + 1):
if is_prime[i]: # 如果 i 是素数,将其倍数全部标记为非素数
for j in range(i * 2, n + 1, i):
is_prime[j] = False
return is_prime
def is_absolute_prime(n):
a = n // 10 # 十位数
b = n % 10 # 个位数
rev = b * 10 + a # 反转后的数字
return is_prime[n] and is_prime[rev] # 判断是否为绝对素数
m, n = map(int, input().split())
is_prime = sieve(n) # 筛出 n 以内的素数
for i in range(m, n + 1):
if i >= 10 and is_absolute_prime(i):
print(i) # 输出绝对素数
```
希望能对你有所帮助!
阅读全文