一个数若本身是完全平方数,再加1又变为素数,那么这一对数被称为亲密数对。写一个python程序,使得输入区间的左端点和右端点,中间用空格隔开,输出格式为:每一对亲密数对占一行,第一个数是完全平方数,第二个数是素数,中间用空格分开
时间: 2024-01-01 16:04:44 浏览: 66
好的,下面是代码实现,注释中有详细解释。
```python
import math
# 判断一个数是否为素数
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
# 判断一个数是否为完全平方数
def is_square(num):
sqrt_num = int(math.sqrt(num))
return sqrt_num * sqrt_num == num
# 获取区间内的亲密数对
def get_intimate_numbers(left, right):
intimate_numbers = []
for i in range(left, right + 1):
if is_square(i - 1) and is_prime(i):
intimate_numbers.append((i - 1, i))
elif is_square(i + 1) and is_prime(i + 1):
intimate_numbers.append((i, i + 1))
return intimate_numbers
# 输入区间左右端点
left, right = map(int, input().split())
# 获取亲密数对
intimate_numbers = get_intimate_numbers(left, right)
# 输出亲密数对
for intimate_number in intimate_numbers:
print(intimate_number[0], intimate_number[1])
```
这个程序中,我们首先定义了两个辅助函数 `is_prime` 和 `is_square`,用于判断一个数是否为素数和完全平方数。
然后,我们定义了 `get_intimate_numbers` 函数,它接受一个区间的左右端点,返回区间内所有的亲密数对。具体实现是,对于区间内的每一个数,判断它减1和加1是否分别满足亲密数对的条件,如果满足,则将这一对数加入到 `intimate_numbers` 列表中。
最后,我们读入区间左右端点,调用 `get_intimate_numbers` 函数获取亲密数对,再逐个输出即可。
阅读全文