【描述】
如果一个整数是素数,同时其对应的字符串是回文字符串时,便称其为回文素数。例如,131既是素数,其对应的字符串“131”又是回文字符串,所以131是回文素数。
输入一个正整数 n , 请你在一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。
【输入格式】
输入一个正整数
【输出格式】
一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。
【示例】
输入:191
输出:2 3 5 7 11 101 131 151 181
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
#======================Begin=================================
prime = True
if n <= 1:
prime = False
return prime
elif n == 2:
return prime
else :
for i in range(2,n):
if n % i == 0:
prime = False
break
return prime
#=========================End==============================
def is_palindrome(number):
palindrome = True
if number < 10:
return palindrome
else :
string = list(str(number))
string_reverse = list(reversed(string))
if string == string_reverse :
return palindrome
return False
def plalindrome_prime(number):
"""接收一个正整数参数number,遍历从0到number之间的所有整数,
若某个数是素数,且转为字符串后是回文字符串,则称其中回文素数
找出并在同一行中输出小于number的所有回文素数,每个数字后一个空格,函数无返回值。"""
#======================Begin=================================
for i in range(1, number):
if is_prime(i):
if is_palindrome(i):
print(i, end = ' ')
#=========================End==============================
positive_int = int(input())
plalindrome_prime(positive_int)
我自己写的有些复杂了,运行超时,下面是我借鉴别人的方法写的
def is_prime(n):
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
else:
return True
def plalindrome_prime(number):
for i in range(number):
if str(i)==str(i)[::-1]and is_prime(i):
print(i,end=' ')
positive_int = int(input())
plalindrome_prime(positive_int)