【算法】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,那么这个数就是丑数,否则不是。
 
  1. 8 / 2 = 4    丑数
  2. 6 / 2 = 3    丑数
  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

 

  

 

  

posted @ 2018-03-01 13:24  songguojun  阅读(222)  评论(0编辑  收藏  举报