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. For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.
Notice
Note that 1 is typically treated as an ugly number.
Example
Given num = 8 return true
Given num = 14 return false
LeetCode上的原题,请参见我之前的博客Ugly Number。
解法一:
class Solution { public: /** * @param num an integer * @return true if num is an ugly number or false */ bool isUgly(int num) { while (num > 1) { if (num % 2 == 0) num /= 2; else if (num % 3 == 0) num /= 3; else if (num % 5 == 0) num /= 5; else return false; } return num == 1; } };
解法二:
class Solution { public: /** * @param num an integer * @return true if num is an ugly number or false */ bool isUgly(int num) { if (num <= 0) return false; while (num % 2 == 0) num /= 2; while (num % 3 == 0) num /= 3; while (num % 5 == 0) num /= 5; return num == 1; } };
本文转自博客园Grandyang的博客,原文链接:丑陋数[LintCode] Ugly Number ,如需转载请自行联系原博主。