-
-
[原创]2.LeetCode刷题-自除数
-
发表于: 2022-2-6 02:23 4934
-
采用每日一练的方式学习思考解题思路,探寻优化方法。
自除数
自除数是指可以被它包含的每一位数除尽的数。也可以理解为,自除数对组成其本身的每一位数字进行取余结果都为0。
需要注意,自除数不允许包含 0 。
例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
题目:现在,给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。请尝试编程解决
筛选自除数
1、首先将这个数的每一个数字提取出来。
2、检查数字中是否存在0,如果存在,则判定不是自除数。
3、使用原数对每一位数字进行除法运算,判定是否存在余数非零结果。
方案一、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 )) [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 11 , 12 , 15 , 22 , 24 , 33 , 36 , 44 , 48 , 55 , 66 , 77 , 88 , 99 ] |
方案二、
1 2 3 4 5 | def yyds(left,right): l = [num for num in range (left,right + 1 ) if ([item for item in list ( str (num)) if ( int (item)! = 0 and num % int (item) = = 0 )] = = list ( str (num)))] return l print (yyds( 1 , 100 )) [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 11 , 12 , 15 , 22 , 24 , 33 , 36 , 44 , 48 , 55 , 66 , 77 , 88 , 99 ] |
还有更简洁的代码吗?请贴出来
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏记录
参与人
雪币
留言
时间
koflfy
为你点赞~
2023-5-6 01:08
伟叔叔
为你点赞~
2023-3-18 04:12
一笑人间万事
为你点赞~
2023-1-12 20:30
赞赏
他的文章
- [原创]1.CTF刷题-进制转换 6365
- [原创]3.LeetCode刷题-完全平方数 4831
- [原创]2.LeetCode刷题-自除数 4935
看原图
赞赏
雪币:
留言: