# 728.self-dividing-numbers

## Statement

• Difficulty: Easy
• Tag: `数学`

• 例如，`128` 是一个 自除数 ，因为 `128 % 1 == 0``128 % 2 == 0``128 % 8 == 0`

``````输入：left = 1, right = 22

``````

``````输入：left = 47, right = 85

``````

• `1 <= left <= right <= 104`

A self-dividing number is a number that is divisible by every digit it contains.

• For example, `128` is a self-dividing number because `128 % 1 == 0`, `128 % 2 == 0`, and `128 % 8 == 0`.

A self-dividing number is not allowed to contain the digit zero.

Given two integers `left` and `right`, return a list of all the self-dividing numbers in the range `[left, right]`.

Example 1:

``````Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
``````

Example 2:

``````Input: left = 47, right = 85
Output: [48,55,66,77]
``````

Constraints:

• `1 <= left <= right <= 104`

## Solution

``````from typing import List

class Solution:
def selfDividingNumbers(self, left: int, right: int) -> List[int]:
def check(x: int) -> bool:
y = x
while x > 0:
t = x % 10
if t == 0 or y % t != 0:
return False
x /= 10
return True
return list(filter(check, range(left, right + 1)))
``````