# C#LeetCode刷题之#728-自除数（Self Dividing Numbers）

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.

Also, a self-dividing number is not allowed to contain the digit zero.

Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.

Input: left = 1, right = 22

Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

Note:The boundaries of each input argument are 1 <= left <= right <= 10000.

```public class Program {

public static void Main(string[] args) {
var left = 1;
var right = 21;

var res = SelfDividingNumbers(left, right);
ShowArray(res);

left = 3;
right = 36;

res = SelfDividingNumbers2(left, right);
ShowArray(res);

}

private static void ShowArray(IList<int> array) {
foreach(var num in array) {
Console.Write(\$"{num} ");
}
Console.WriteLine();
}

private static IList<int> SelfDividingNumbers(int left, int right) {
var res = new List<int>();
for(var i = left; i <= right; i++) {
}
return res;
}

private static bool IsSelfDividingNumber(int num) {
//用字符串索引取位
var length = num.ToString().Length;
for(var i = 0; i < length; i++) {
var bit = int.Parse(num.ToString()[length - i - 1].ToString());
if(bit == 0 || num % bit != 0) return false;
}
return true;
}

private static IList<int> SelfDividingNumbers2(int left, int right) {
var res = new List<int>();
for(var i = left; i <= right; i++) {
}
return res;
}

private static bool IsSelfDividingNumber2(int num) {
//用传统取余式取位
var number = num;
while(number > 0) {
var bit = number % 10;
if(bit == 0 || num % bit != 0) return false;
number /= 10;
}
return true;
}

}```

```1 2 3 4 5 6 7 8 9 11 12 15
3 4 5 6 7 8 9 11 12 15 22 24 33 36```