【算法】php计算出丑数
丑数描述
把只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而7,23,111则不是丑数。
判断方法
首先除2,直到不能整除为止,然后除5到不能整除为止,然后除3直到不能整除为止。最终判断剩余的数字是否为1,如果是1则为丑数,否则不是丑数。比如 8除以2等于4,4在除以2等于2 ,包含因子2,所以是丑数。在比如14,14除以2等于7,因为它包含因子7,不是丑数。
丑数只能被2,3,5整除。也就是说如果一个数能被2整除,我们把它连续除以2;如果能被3整除,就连续除以3;如果能被5整除,就除以5.如果最后我们得到的是1,那么这个数就是丑数,否则不是。
- 8 / 2 = 4 丑数
- 6 / 2 = 3 丑数
- 14 / 2 = 7 不是丑数
下面是php代码判断丑数
function _isUglyNb($nums){ if(!is_numeric($nums)){ return 'it is not a number'; } //是否能被2整除 while($nums%2 == 0){ $nums = $nums/2; } //是否能被3整除 while($nums%3 == 0){ $nums = $nums/3; } //是否能被5整除 while($nums%5 == 0){ $nums = $nums/5; } if($nums == 1) {//丑数 return 1; }else{ return 0; } } echo _isUglyNb(8); // 1 echo _isUglyNb(6); // 1 echo _isUglyNb(14); // 0