丑数

原创 2016年08月28日 19:10:46

题目描述:写一个程序来检测一个整数是不是丑数。丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。可以认为 1 是一个特殊的丑数。


样例:

给出 num = 8,返回 true。

给出 num = 14,返回 false。


显然,这是一个新颖的概念,在传统的数学概念里,找不到“丑数”这个概念,但是这种新概念的题目有时反而不难,只需要仔细分析其定义即可。


根据定义,丑数是只包含质因子2,3,5的正整数。那么不妨可以由以下4步来判定一个整数是不是丑数:

1. 判断正负:若是负数,可直接返回False

2. 不断除2,直到商还是整数的一次为最后一次

3. 对2步结束后的值,不断除3,直到商还是整数的一次为最后一次

4. 对3步结束后的值,不断除5,直到商还是整数的一次为最后一次


此时,我们看4步结束后的值是不是1:是1,则说明是丑数;不是1,则说明不是丑数。


思路再清晰不过了,给出代码:

class Solution:
    # @param {int} num an integer
    # @return {boolean} true if num is an ugly number or false
    def isUgly(self, num):
        if num <= 0:
            return False
        while num % 2 == 0:
            num = num / 2
        while num % 3 == 0:
            num = num / 3
        while num % 5 == 0:
            num = num / 5
        if num == 1:
            return True
        else:
            return False


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

经典数据算术----丑数

  • 2009-01-04 20:00
  • 175KB
  • 下载

丑数查找的代码

UVA136 丑数

题目的意思是要输出第1500个丑数

判断是否为丑数

  • 2015-08-19 15:53
  • 473B
  • 下载

c实现的丑数

  • 2015-12-24 18:51
  • 1.25MB
  • 下载

HDOJ 1058:Humble Numbers 寻找丑数问题 解题报告

符合要求的丑数只含有2、3、5、7的质因子 求前5842个丑数 解题思想为:下一个最小的丑数一定在它前面的每个元素分别与2、3、5、7的乘积的结果中产生 而实际上只需跟踪4个数列即f[a]*2, f...

hdu 1058 Humble Numbers 丑数

Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

Python:丑数

牛客网上的剑指 offer的在线编程: 题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)