34丑数

原创 2015年07月10日 14:37:46


bool IsUgly(int number)
{
while (number % 2 == 0)
number /= 2;
while (number % 3 == 0)
number /= 3;
while (number % 5 == 0)
number /= 5;
return (number == 1) ? true : false;
}

接下来只需要按顺序判断每一个整数是不是丑数,代码如下:

int GetUglyNumber(int index)
{
if (index <= 0)
return 0;
int number = 0;
int uglyFound = 0;
while (uglyFound < index)
{
++number;
if (IsUgly(number))
{
++uglyFound;
}
}
return number;
}

只需要在函数GetUglyNumber中传入参数1500,就能得到第1500个丑数。但是每个整数都需要做求余和除法运算,时间效率不是很高。



int GetUglyNumber_Solution2(int index)
{
if (index <= 0)
return 0;
int *pUglyNumbers = new int[index];
pUglyNumbers[0] = 1;
int nextUglyIndex = 1;
int* pMultiply2 = pUglyNumbers;
int* pMultiply3 = pUglyNumbers;
int* pMultiply5 = pUglyNumbers;
while (nextUglyIndex < index)
{
int min = Min(*pMultiply2 * 2, *pMultiply3 * 3, *pMultiply5 * 5);
pUglyNumbers[nextUglyIndex] = min;
while (*pMultiply2 * 2 <= pUglyNumbers[nextUglyIndex])
   ++pMultiply2;
while (*pMultiply3 * 3 <= pUglyNumbers[nextUglyIndex])
++pMultiply3;
while (*pMultiply5 * 5 <= pUglyNumbers[nextUglyIndex])
++pMultiply5;
++nextUglyIndex;
}
int ugly = pUglyNumbers[nextUglyIndex - 1];
delete[] pUglyNumbers;
return ugly;
}
int Min(int number1, int number2, int number3)
{
int min = (number1 < number2) ? number1 : number2;
min = (min < number3) ? min: number3;
return min;
}


介绍一下ajax后最好的返回结果的方式&amp;#34;Json&amp;#34;

我使用ajax好多年了,以往把请求交给asp或php处理完成之后往往是输出一个字符串,然后把这个字符串返回给客户端,用客户端的javascript对该字符串进行split.偶尔也用xml,服务器端处理...
  • sibang
  • sibang
  • 2014年08月21日 16:43
  • 838

什么是Wiegand协议?什么是韦根26? 什么是韦根34?

http://zhang.xin.fang.blog.163.com/blog/static/390570200752083957572/ 什么是Wiegand协议? Wiegand协议是国际...
  • u014461454
  • u014461454
  • 2014年03月31日 17:53
  • 1224

Django开发系列之二

Django源文件位置如果你找不到Django源文件在你系统上的位置,运行如下命令:$ python -c " import sys sys.path = sys.path[1:] import dj...
  • baixue6269
  • baixue6269
  • 2016年05月17日 11:06
  • 345

【索引】算法竞赛入门经典-第10章 数学概念与方法

算法竞赛入门经典-第10章 数学概念与方法
  • u011217342
  • u011217342
  • 2013年11月23日 11:39
  • 802

JS基础——JS找到合适的值

HTML部分: var arr = [ '100px', 'abc'-6, [], -98765, 34, -2, 0, '300', , function(){alert(1);}, null, ...
  • u011175410
  • u011175410
  • 2014年11月20日 15:05
  • 652

Exercise 34:访问列表元素

原文链接:http://learnpythonthehardway.org/book/ex34.htm
  • LuoYe_123456
  • LuoYe_123456
  • 2014年04月04日 15:52
  • 961

人社部发〔2013〕34号人力资源社会…

人力资源社会保障部关于执行《工伤保险条例》若干问题的意见 人力资源和社会保障部 人力资源社会保障部关于执行《工伤保险条例》若干问题的意见 人社部发〔2013〕34号 各省、自治区、直辖市及新疆...
  • sjpljr
  • sjpljr
  • 2017年04月14日 09:59
  • 338

剑指Offer(第二版)面试题34:二叉树中和为某一个值的路径

剑指Offer(第二版)面试题34:二叉树中和为某一个值的路径
  • qq_25827845
  • qq_25827845
  • 2017年06月22日 11:28
  • 1087

中国34个三十四个省会城市的货郎担回路15531千米

中国34个三十四个省会城市的货郎担回路15531千米        在网上找到中国三十四个城市的经纬度,计算出各个城市之间的球面距离,做一个就近连通图,使用触摸空洞回溯法计算出了最短的几个哈密顿圈,最...
  • duzuokanyunqi1
  • duzuokanyunqi1
  • 2014年12月20日 02:40
  • 14557

Spring介绍、安装、helloworld

Spring 4.0 描述 Spring(官网:projects.spring.io)是一个框架,为了简化企业级应用开发而生,使用Spring可以使简单的javabean实现以前只有gjb才能实现...
  • qq_25034451
  • qq_25034451
  • 2018年01月09日 22:24
  • 11
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:34丑数
举报原因:
原因补充:

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