用python判断一个数是否为对称且不大于五位数的素数。要求判断对称和判断素数各写一个函数。 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一个正整数n(0 < n < 2 32 )。 输出格式: 对于每组测试,若n是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独占一行。注意:引号不必输出。 输入样例: 11 101 272 33533 2147483647 输出样例: Yes Yes No Yes No
时间: 2023-06-11 08:08:11 浏览: 588
判断对称的函数实现如下:
```python
def is_symmetric(num):
num_str = str(num)
length = len(num_str)
for i in range(length // 2):
if num_str[i] != num_str[length - i - 1]:
return False
return True
```
判断素数的函数实现如下:
```python
def is_prime(num):
if num == 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
```
完整代码实现如下:
```python
def is_symmetric(num):
num_str = str(num)
length = len(num_str)
for i in range(length // 2):
if num_str[i] != num_str[length - i - 1]:
return False
return True
def is_prime(num):
if num == 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
while True:
try:
n = int(input())
if n > 100000:
continue
if is_symmetric(n) and is_prime(n):
print("Yes")
else:
print("No")
except:
break
```
注意,输入数据可能有多组,需要使用 `while True` 循环读取输入,并且要加上 `try...except` 来处理输入结束的情况。同时,题目要求输入的数不大于五位数,因此需要加上一个判断条件 `if n > 100000` 来过滤大于五位数的输入。
阅读全文