class Solution {
public:
/*
* @param k: The number k.
* @return: The kth prime number as description.
*/
long long Min(long long i,long long j,long long k){
return min(i,min(j,k));
}
long long kthPrimeNumber(long long index)
{
if (index<=0)
return 0;
long long UglyNums[15000];
UglyNums[0] = 1;
long long CurrentIndex = 1; //当前要求的丑数的下标索引
long long *p3 = UglyNums;
long long *p5 = UglyNums;
long long *p7 = UglyNums;
//求每个丑数,并保存起来
while (CurrentIndex<=index)
{
long long min = Min(3*(*p3),5*(*p5),7*(*p7));
UglyNums[CurrentIndex] = min;
while (3*(*p3)<=UglyNums[CurrentIndex])
++p3;
while (5*(*p5)<=UglyNums[CurrentIndex])
++p5;
while (7*(*p7)<=UglyNums[CurrentIndex])
++p7;
++CurrentIndex;
}
long long result = UglyNums[index];
return result;
}
};
LintCode-剑指Offer-(4)丑数
最新推荐文章于 2018-07-17 18:46:41 发布