题目:
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
.
Note that 1
is typically treated as an ugly number.
题意:
写一个程序检查一个给定的数字是否是“丑数”。丑数具有如下特征:1是丑数,丑数可以表示为有限个2、3、5的乘积。
我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。
思路:
最直接的办法就是不停的除以这些质数,如果剩余的数字是1的话就是丑陋数,如果不能被2、3、5取余的话,则不是丑数。
代码:16ms
class Solution { public: bool isUgly(int num) { while(num>=2){ 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; } };代码:8ms
class Solution { public: 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; } };代码:4ms
class Solution { public: bool isUgly(int num) { for (int i=2; i<6 && num; i++) while (num % i == 0) num /= i; return num == 1; } };