Ugly Number(丑数)

来源:互联网 发布:痔疮手术 知乎 编辑:程序博客网 时间:2024/06/06 08:05

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.(丑数是指质数因子只包含2,3,5的正数。例如6,8都是丑数而14则不是,因为14含有其他的质数因子7)

Note that 1 is typically treated as an ugly number.(1通常被认为是丑数)

1.个人分析
丑数要求分解因子只能由2,3,5组成,直观的做法是将n不断地对2,3,5进行整除,若结果为1则n为丑数,否则就不是。

2.个人解法

bool isUgly(int num) {    if(num < 0)        return false;    while (num > 1)    {        if (num % 2 == 0){            num /= 2;        }         else    if(num % 3 == 0){            num /= 3;        }        else if(num % 5 == 0){            num /= 5;        }else {            break;        }    }    return num == 1;}

3.参考解法

bool isUgly2(int num) {    int arr[3] = {2, 3, 5};    if (num <= 0)    {        return false;    }    for (auto i : arr)    {        while (num % i == 0)        {            num /= i;        }    }    return num == 1;}

这种解法的原理和上面的解法是一样的。

4.个人总结
起初对该题的解法并没有什么思路,但对题中给出的几个例子进行了一通分析后就有了解决的思路,不得不说通过举例或者画图来进行观察分析是解决问题尤其是比较陌生的问题最佳方式。

PS:

  • 题目的中文翻译是本人所作,如有偏差敬请指正。
  • 其中的“个人分析”和“个人解法”均是本人最初的想法和做法,不一定是对的,只是作为一个对照和记录。
0 0
原创粉丝点击