题目描述:
写一个程序来检测一个整数是不是丑数
。
丑数的定义是,只包含质因子 2, 3, 5
的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。
可以认为 1
是一个特殊的丑数。
给出 num = 8
,返回 true
。
给出 num = 14
,返回 false
。
解答:
1 public class Solution { 2 /** 3 * @param num an integer 4 * @return true if num is an ugly number or false 5 */ 6 public boolean isUgly(int num) { 7 // Write your code here 8 9 if(num <= 0){ 10 return false; 11 }else { 12 int tmp = isDouble(num, 2); 13 if (tmp != 1) { 14 tmp = isDouble(tmp, 3); 15 if (tmp != 1) { 16 tmp = isDouble(tmp, 5); 17 if (tmp != 1) { 18 return false; 19 } else { 20 return true; 21 } 22 } else { 23 return true; 24 } 25 } else { 26 return true; 27 } 28 } 29 } 30 31 public static int isDouble(int num,int deb){ 32 33 int tmp = num %deb; 34 35 if( tmp == 0 ){ 36 num = num/deb; 37 return isDouble(num,deb); 38 }else { 39 return num; 40 } 41 } 42 }
解答:本算法时间复杂度较高,在丑数高级中,不能A过,是一个本方法。还需寻找新的算法。
原文:http://www.cnblogs.com/tutotu/p/6389264.html