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

LeetCode返回False本地VSCode返回True,完美数检测代码问题求助

完美数检测代码LeetCode运行异常的解决办法

你的代码核心问题是在函数里用input语句覆盖了LeetCode传入的参数num:

  • 本地运行时,你通过input手动输入数值,代码逻辑基于你输入的数计算,所以结果正确;
  • 但LeetCode平台是直接把测试用例的数值传入函数的num参数,你写的num = int(input("Enter number: "))会把平台传入的测试值替换掉(平台环境下这行代码无法获取有效输入,相当于num被改成了不符合预期的值),导致判断结果和预期相反。

修正后的代码如下,删掉input那行即可:

class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        if num <= 1:
            return False
        sum_total = 0
        for i in range(1, num):
            if num % i == 0:
                sum_total += i
        return sum_total == num

额外提个小优化:遍历到num的平方根就能计算所有因数,不用遍历到num-1,能大幅提高效率,适合处理更大的数值:

class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        if num <= 1:
            return False
        sum_total = 1  # 1是所有大于1的数的因数
        sqrt_num = int(num ** 0.5)
        for i in range(2, sqrt_num + 1):
            if num % i == 0:
                sum_total += i
                if i != num // i:  # 避免平方数重复累加
                    sum_total += num // i
        return sum_total == num

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:27:40