程序员面试题精选100题(37)-寻找丑数[算法]
字号:小|大
2019-09-22 FW.5VV.CN范文网题目:我们把只包含因子
2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。
所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;如果能被3整除,就连续除以3;如果能被5整除,就除以连续5。如果最后我们得到的是1,那么这个数就是丑数,否则不是。
基于前面的分析,我们可以写出如下的函数来判断一个数是不是丑数:
bool IsUgly(int number)
{
while(number % 2 == 0)
number /= 2;
while(number % 3 == 0)
相关文章
- 程序员面试题精选100题(06)-整数二进制表示中1的个数[算法]
- 程序员面试题精选100题(51)-顺时针打印矩阵[算法]
- 程序员面试题精选100题(23)-跳台阶问题[算法]
- 程序员面试题精选100题(35)-两链表的第一个公共结点[数据结构]
- 程序员面试题精选100题(25)-在从1到n的正数中1出现的次数[算法]
- 程序员面试题精选100题(13)-第一个只出现一次的字符
- 程序员面试题精选100题(61)-数对之差的最大值[算法]
- 安庆潜山事业单位面试真题汇总
- 程序员面试题精选100题(50)-树的子结构[数据结构]
- 程序员面试题精选100题(15)-含有指针成员的类的拷贝[C/C++/C#]
热门推荐
- 程序员面试题精选100题(06)-整数二进制表示中1的个数[算法]
- 程序员面试题精选100题(51)-顺时针打印矩阵[算法]
- 程序员面试题精选100题(23)-跳台阶问题[算法]
- 程序员面试题精选100题(35)-两链表的第一个公共结点[数据结构]
- 程序员面试题精选100题(25)-在从1到n的正数中1出现的次数[算法]
- 程序员面试题精选100题(13)-第一个只出现一次的字符
- 程序员面试题精选100题(61)-数对之差的最大值[算法]
- 安庆潜山事业单位面试真题汇总
- 程序员面试题精选100题(50)-树的子结构[数据结构]
- 程序员面试题精选100题(15)-含有指针成员的类的拷贝[C/C++/C#]
