【OJ练习】寻找丑数
2014-07-09 13:08
423 查看
描述:
丑数是指那些因子只含2,3,5的数,为方便起见,1也视为丑数,故1,2,3,4,5,6,8,9,10,12,15是最前面的丑数,请编写一个程序,输出第N(N<=300)个丑数。(n为输入值)
如果输入非法值,请返回 -1
一些转化的例子:
输入整数N = 5
输出的丑数是5
/* 功能:输入一个整数n,输出第n个丑数的值
* 输入:输入的整数
* 输出:无
* 返回:输出第N个丑数,如果N小于等于0返回-1
*/
int FindUglyNumber(int N)
{
int count=N;
int Num=1;
int Temp_Num;
if(N<1||N>300)
return -1;
if(N==1)
return 1;
while(count!=1)
{
Num++;
Temp_Num=Num;
while(Temp_Num!=1)
{
if(Temp_Num%2==0)
{
Temp_Num=Temp_Num/2;
}
else if(Temp_Num%3==0)
{
Temp_Num=Temp_Num/3;
}
else if(Temp_Num%5==0)
{
Temp_Num=Temp_Num/5;
}
else
break;
}
if(Temp_Num==1)
{
count--;
}
}
return Num;
}
丑数是指那些因子只含2,3,5的数,为方便起见,1也视为丑数,故1,2,3,4,5,6,8,9,10,12,15是最前面的丑数,请编写一个程序,输出第N(N<=300)个丑数。(n为输入值)
如果输入非法值,请返回 -1
一些转化的例子:
输入整数N = 5
输出的丑数是5
/* 功能:输入一个整数n,输出第n个丑数的值
* 输入:输入的整数
* 输出:无
* 返回:输出第N个丑数,如果N小于等于0返回-1
*/
int FindUglyNumber(int N)
{
int count=N;
int Num=1;
int Temp_Num;
if(N<1||N>300)
return -1;
if(N==1)
return 1;
while(count!=1)
{
Num++;
Temp_Num=Num;
while(Temp_Num!=1)
{
if(Temp_Num%2==0)
{
Temp_Num=Temp_Num/2;
}
else if(Temp_Num%3==0)
{
Temp_Num=Temp_Num/3;
}
else if(Temp_Num%5==0)
{
Temp_Num=Temp_Num/5;
}
else
break;
}
if(Temp_Num==1)
{
count--;
}
}
return Num;
}
相关文章推荐
- 华为机试—寻找丑数 && 九度OJ 1214
- 九度OJ 1214 寻找丑数【算法】
- 数据结构练习(27)寻找丑数
- 九度OJ 1214 寻找丑数【算法】
- 简单题练习——寻找丑数
- Ugly Number II 寻找第N个丑数
- OJ2128树结构练习——排序二叉树的中序遍历
- 寻找丑数
- 寻找丑数 【微软面试100题 第六十四题】
- 华为OJ——(练习用)挑7
- 【LeetCode002-003算法/编程练习C++】---Add Two Numbers||寻找最长无重复字母子串。//第三题之后有空要再想一想…
- 寻找丑数
- 寻找第k个丑数
- OJ 1094 Sorting It All Out练习小结
- 【算法学习笔记】78. STL二分的练习 下标映射的处理技巧 SJTU OJ 1053 二哥的内存
- 南阳oj NYOJ 寻找最大数 题目236
- HDU 1058 Humble Numbers (动规+寻找丑数问题)
- oj第七周练习F
- 寻找丑数
- 第七周 OJ练习-1