我已经在if中限制回文数字不要输出了,可是还是输出了,我在我的pycharm测试了ishuiwen函数,结果181,191,151这些数它都能判断成功是回文数呀,应该没问题的呀.
问题:
我的代码:
import math
#==================Begin=================================
# 补充你的代码
def isprime(n):
if n==1:
return 0
for i in range(2,int(math.sqrt(n))+1):
if n%i == 0:
return 0
return 1
def ishuiwen(s):
for i in range(len(s)):
if s[i]!=s[(len(s)-i-1)]:
return 0
return 1
def upsidedown(n):
result = 0
while n>9:
first = n%10
result = result*10 +first
n = int(n/10)
result = result*10 + n
return result
def reverse_prime(number):
"""接收一个正整数参数,找出并在同一行内输出所有小于number的反素数,每个数字后一个空格。
反素数指某数i及其逆序数都是素数,但数i对应的字符串不是回文字符串。函数无返回值"""
#======================Begin=================================
for i in range(10,number):
i_string = str(i)
if isprime(i) and ~(ishuiwen(i_string)):
if isprime(upsidedown(i)):
print(i,end=' ')
#========================End===============================
positive_int = int(input())
reverse_prime(positive_int)
结果: