问题
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3862 访问。
编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。
说明:
- 1 是丑数。
- 输入不会超过 32 位有符号整数的范围: [−231, 231 − 1]。
Write a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only include 2, 3, 5.
Note:
- 1 is typically treated as an ugly number.
- Input is within the 32-bit signed integer range: [−231, 231 − 1].
示例
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3862 访问。
public class Program {
public static void Main(string[] args) {
var n = 60;
var res = IsUgly(n);
Console.WriteLine(res);
Console.ReadKey();
}
private static bool IsUgly(int num) {
var uglyList = new int[] { 2, 3, 5 };
foreach(var ugly in uglyList) {
while(num % ugly == 0 && (num /= ugly) > 0) { }
}
return num == 1;
}
}
以上给出1种算法实现,以下是这个案例的输出结果:
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3862 访问。
True
分析:
显而易见,以上算法的时间复杂度为: 。