263. 丑数
Plan A
public class Solution
{
public bool IsUgly(int n)
{
if (n == 0)
return false;
if (n == 1)
return true;
if ((n % 2) == 0)
return IsUgly(n / 2);
if ((n % 3) == 0)
return IsUgly(n / 3);
if ((n % 5) == 0)
return IsUgly(n / 5);
return false;
}
}
Plan B,易扩展
public class Solution
{
public bool IsUgly(int n)
{
if (n == 0)// 这道题也可以判断 n < 1
return false;
Bar(ref n, 2, 3, 5);
return n == 1;
}
void Foo(ref int n, int a)
{
while ((n % a) == 0)
n /= a;
}
void Bar(ref int n, params int[] @as)
{
foreach (var a in @as)
Foo(ref n, a);
}
}