You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现super number(超数)判断功能代码逻辑错误求解

超数判断逻辑修复方案

问题根因

原有代码的判断逻辑存在漏洞:仅排除了含有5、7、11、13这几个小质因子的情况,没有覆盖所有非2、3的质因子场景。超数的本质是所有质因子只能是2和3,比如62=2×31,31是不属于2、3的质因子,所以62不是超数,但原代码仅检测到它能被2整除就直接判定为超数,自然会出错。

修复思路

针对输入的自然数做如下处理即可实现准确判断:

  • 先反复除以2,直到无法被2整除
  • 再反复除以3,直到无法被3整除
  • 最终剩余的结果如果等于1,说明该数的质因子只有2和3,属于超数,否则不属于

修复后代码

num = int(input("Enter a natural number "))
if num <= 0:
    print("That is not a natural number")
else:
    n = num
    # 移除所有因子2
    while n % 2 == 0:
        n = n // 2
    # 移除所有因子3
    while n % 3 == 0:
        n = n // 3
    # 判断剩余值
    if n == 1:
        print("Number is super")
    else:
        print("Number is not super.")

测试验证

  • 输入62:62除以2得31,31无法被2或3整除,剩余值31≠1,输出Number is not super. 符合预期
  • 输入1:除以2、3都无变化,剩余值1,输出超数,符合预期
  • 输入12:12连续除以2两次得3,再除以3得1,输出超数,符合预期
  • 输入10:10除以2得5,剩余5≠1,输出不是超数,符合预期

内容的提问来源于stack exchange,提问作者Ole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:06:07