描述
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。
例如:
13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。
输入一个正整数 n , 请在同一行输出从小到大排列的的前n个反素数,每个数字后面加一个空格。
输入格式
输入一个正整数
输出格式
符合条件的反素数
示例
输入: 10 输出: 13 17 31 37 71 73 79 97 107 113
解析:
- 判定素数定义为函数
- 判定回文定义为一个函数
- 判定逆序字符串定义为一个函数
- 数字不是回文数,数字本身、逆序数都是素数
- 计数
- 在同一行内输出
def is_prime(n):
if n <= 1: # 小于2的数字单独处理
return 0
for i in range(2, int(n ** (1 / 2) + 1)): # 根据素数定义判定是否是素数,是素数返回1
if n % i == 0:
return 0
return 1
def palindromic(num):
"""接收一个数字为参数,判定其是否为回文数,返回布尔值。"""
if str(num) == str(num)[::-1]:
return True
else:
return False
def reverse_num(num):
"""接收一个整数,返回其逆序字符串对应的整数"""
return int(str(num)[::-1])
def reverse_prime(number):
i = 2
count = 0
while True:
if not palindromic(i) and is_prime(i) and is_prime(reverse_num(i)):
print(i, end=' ') # i为回文素数时输出i,输出后不换行
count = count + 1
if count == number:
break
i = i + 1
if __name__ == "__main__":
n = int(input())
reverse_prime(n)
def is_prime(n):
if n <= 1: # 小于2的数字单独处理
return 0
for i in range(2, int(n ** (1 / 2) + 1)): # 根据素数定义判定是否是素数,是素数返回1
if n % i == 0:
return 0
return 1
def palindromic(num):
"""接收一个数字为参数,判定其是否为回文数,返回布尔值。"""
if str(num) == str(num)[::-1]:
return True
else:
return False
def reverse_num(num):
"""接收一个整数,返回其逆序字符串对应的整数"""
return int(str(num)[::-1])
def reverse_prime(number):
i = 2
result = []
while True:
if not palindromic(i) and is_prime(i) and is_prime(reverse_num(i)):
result.append(i)
if len(result) == number:
break
i = i + 1
return result
if __name__ == "__main__":
n = int(input())
print(*reverse_prime(n))