题目要求输入一个正整数n,在一行中输出前n个回文素数
排查下来感觉是质数部分出了问题
个人感觉是for i in range(2,n)这句有问题
但不知道怎么改
你的错误主要是因为def定义的是函数,不能放在循环中,而是因为放在外面。代码修改如下,望采纳:
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def palindrome(my_string):
if len(my_string) == 1:
return False
else:
if my_string == my_string[::-1]:
return True
else:
return False
a = int(input())
n = 1
while a > 0:
if palindrome(str(n)) and is_prime(n):
a = a - 1
print(n, end=' ')
n = n + 1
运行结果: