Shinone+const 2022-10-25 20:25 采纳率: 92%
浏览 21
已结题

为什么if判断后还是出现回文数

我已经在if中限制回文数字不要输出了,可是还是输出了,我在我的pycharm测试了ishuiwen函数,结果181,191,151这些数它都能判断成功是回文数呀,应该没问题的呀.
问题:

img

img


我的代码:

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)     


结果:

img

  • 写回答

1条回答 默认 最新

  • Ko-walski 2022-10-25 20:50
    关注

    你的代码多此一举有点

    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 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+1):
            if isprime(i):
                if isprime(upsidedown(i)):
                    if str(i) != str(i)[::-1]:
                        print(i, end=' ')
    
        # ========================End===============================
    
    
    positive_int = int(input())
    reverse_prime(positive_int)     
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月25日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看