263. 丑数~字节题库

172 阅读1分钟

263. 丑数

Difficulty: 简单

编写一个程序判断给定的数是否为丑数。

丑数就是只包含质因数 2, 3, 5 的正整数

示例 1:

输入: 6
输出: true
解释: 6 = 2 × 3

示例 2:

输入: 8
输出: true
解释: 8 = 2 × 2 × 2

示例 3:

输入: 14
输出: false 
解释: 14 不是丑数,因为它包含了另外一个质因数 7。

说明:

  1. 1 是丑数。
  2. 输入不会超过 32 位有符号整数的范围: [−231,  231 − 1]。

Solution

这种方式稍微复杂了一些

Language: golang

func isUgly(num int) bool {
	if num == 0 {
		return false
	}
	if num == 1 {
		return true
	}
	for {
		if num != 1 {
			//如果不能被2整数
			if num%2 != 0 {
				//如果不能被3整数
				if num%3 != 0 {
					//如果不能被5整数
					if num%5 != 0 {
						return false
					} else {
						num = num / 5
					}

				} else {
					num = num / 3
				}
			} else {
				num = num / 2
			}

		} else {
			return true
		}
	}
}

我们来看看更简单的方式

func isUgly(num int) bool {
	if num < 1 {
		return false
	}
	for {
		if num%2 == 0 {
			num /= 2
		} else if num%3 == 0 {
			num /= 3
		} else if num%5 == 0 {
			num /= 5
		} else if num == 1 {
			return true
		} else {
			return false
		}
	}
}