语欣老爹 发表于 2022-2-6 01:58

2.LeetCode刷题-自除数

本帖最后由 语欣老爹 于 2022-2-6 10:24 编辑

采用每日一练的方式学习思考解题思路,探寻优化方法。

自除数
自除数是指可以被它包含的每一位数除尽的数。也可以理解为,自除数对组成其本身的每一位数字进行取余结果都为0。需要注意,自除数不允许包含 0 。
例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。


题目:现在,给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。请尝试编程解决


筛选自除数
1、首先将这个数的每一个数字提取出来。
2、检查数字中是否存在0,如果存在,则判定不是自除数。
3、使用原数对每一位数字进行除法运算,判定是否存在余数非零结果。

方案一、
def yyds(left,right):
    l=[]
    for num in range(left,right+1):
      numStr=str(num)
      numList=list(str(num))
      res=True
      for item in numList:
            itemNum=int(item)
            if itemNum==0:
                res=False
                break
            if num % itemNum !=0:
                res=False
      if res:
            l.append(num)
    return lprint(yyds(1,100))



优化方案二
def yyds(left,right):
    l===list(str(num)))]
    return l
print(yyds(1,100))



还有更简洁的代码吗?请贴出来

slbcmgn 发表于 2022-2-6 09:00

学习经验哈,谢谢

dingyx99 发表于 2022-2-6 09:52

互相学习

小能维尼 发表于 2022-2-6 16:00

本帖最后由 小能维尼 于 2022-2-6 16:01 编辑

不是,把代码全写一行是什么操作??
我当初写C语言也是这么搞,还用三元式简化。
但是不具有可读性啊!代码写给人看,谢谢!!
可能是我不懂太多,但是不易读,是真的。
页: [1]
查看完整版本: 2.LeetCode刷题-自除数