Lintcode517 Ugly Number solution 题解

【题目描述】

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.

 Notice

Note that 1 is typically treated as an ugly number.

写一个程序来检测一个整数是不是丑数。

丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。

 注意事项

可以认为 1 是一个特殊的丑数。

【题目链接】

www.lintcode.com/en/problem/ugly-number/

【题目解析】

本题让我们找到第n个丑陋数,还好题目中给了很多提示,基本上相当于告诉我们解法了,根据提示中的信息,我们知道丑陋数序列可以拆分为下面3个子列表:

(1) 1x2,  2x2, 2x2, 3x2, 3x24x2, 5x2...

(2) 1x3,1x3, 2x3, 2x3, 2x3, 3x3, 3x3...

(3) 1x5,  1x5, 1x5, 1x5, 2x5, 2x5, 2x5...

仔细观察上述三个列表,我们可以发现每个子列表都是一个丑陋数分别乘以2,3,5,而要求的丑陋数就是从已经生成的序列中取出来的,我们每次都从三个列表中取出当前最小的那个加入序列。

【参考答案】

www.jiuzhang.com/solutions/ugly-number/

你可能感兴趣的:(Lintcode517 Ugly Number solution 题解)