题目:丑数
题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
思路
丑数p = 2 ^ x * 3 ^ y * 5 ^ z。用数组a存放。
class Solution {
public:
//丑数p = 2 ^ x * 3 ^ y * 5 ^ z
int GetUglyNumber_Solution(int index) {
if(index<=0) return 0;//异常处理
vector<int> a;
a.push_back(1);
int p2=0,p3=0,p5=0,num=1;
while(a.size()< index){
num = min(a[p2]*2,min(a[p3]*3, a[p5]*5));
if(num==a[p2]*2) p2++;
if(num==a[p3]*3) p3++;
if(num==a[p5]*5) p5++;
a.push_back(num);
}
return a[index-1];
}
};