描述
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。
例如:
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 0for i in range(2, int(n ** (1 / 2) + 1)): # 根据素数定义判定是否是素数,是素数返回1if n % i == 0:return 0return 1def palindromic(num):"""接收一个数字为参数,判定其是否为回文数,返回布尔值。"""if str(num) == str(num)[::-1]:return Trueelse:return Falsedef reverse_num(num):"""接收一个整数,返回其逆序字符串对应的整数"""return int(str(num)[::-1])def reverse_prime(number):i = 2count = 0while True:if not palindromic(i) and is_prime(i) and is_prime(reverse_num(i)):print(i, end=' ') # i为回文素数时输出i,输出后不换行count = count + 1if count == number:breaki = i + 1if __name__ == "__main__":n = int(input())reverse_prime(n)
def is_prime(n):if n <= 1: # 小于2的数字单独处理return 0for i in range(2, int(n ** (1 / 2) + 1)): # 根据素数定义判定是否是素数,是素数返回1if n % i == 0:return 0return 1def palindromic(num):"""接收一个数字为参数,判定其是否为回文数,返回布尔值。"""if str(num) == str(num)[::-1]:return Trueelse:return Falsedef reverse_num(num):"""接收一个整数,返回其逆序字符串对应的整数"""return int(str(num)[::-1])def reverse_prime(number):i = 2result = []while True:if not palindromic(i) and is_prime(i) and is_prime(reverse_num(i)):result.append(i)if len(result) == number:breaki = i + 1return resultif __name__ == "__main__":n = int(input())print(*reverse_prime(n))
