today is 2018年12-22日
我重新写了一下:
public class Solution {
public IList<int> SelfDividingNumbers(int left, int right) {
IList<int> r = new List<int>();
for (int i = left; i < right+1; i++)
{
bool b = check(i);
if (b==true)
{
r.Add(i);
}
}
return r;
}
private static bool check(int i)
{
int ershii = i;
while (i!=0)
{
var yushu = i % 10;
if (yushu == 0) return false;
if (ershii % yushu != 0) return false;
i /= 10;
}
return true;
}
}
这是以前写的:
我的绝招就是将整数转换成数组
static void Main(string[] args)
{
int a = 1, b = 22;
List<int> res = GetZRS(a,b);
foreach (var item in res)
{
Console.Write(item+"-");
}
Console.ReadKey();
}
#region 判断每一个数是否是自然数
private static List<int> GetZRS(int a, int b)
{
List<int> intppse = new List<int>();
if (1 < a && b <= 10000)
{
}
for (int i = a; i < b; i++)
{
//定义:自除数 是指可以被它包含的每一位数除尽的数。
bool t = IsZRS(i);
if (t == true)
{
intppse.Add(i);
}
}
return intppse;
}
//判断每一个数是否是自然数
private static bool IsZRS(int n)
{
bool b = false;
int[] arr = n.ToString().Select(s => int.Parse(s.ToString())).ToArray();
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == 0)
{
b = false;
break;
}
else if (n % arr[i] == 0)
{
b = true;
}
else if (n % arr[i] != 0) // 比如13 、1 被%==0 ,可是3 被% !=0 ,所以不属于自除数
{
b = false;
}
}
return b;
}
#endregion
总结: 代码熟练度+1(一次过)