题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。求按从小到大的顺序的第1500个丑数。
解题思路:第一种方法,暴力解法,从数字1开始遍历,一直找到第1500个丑数为止,这种穷举的思路是最简单的,效率也是最低的。代码如下:
#include <iostream>
using namespace std;
bool IsUgly(int n){
while (n % 2 == 0){
n/=2;
}
while (n % 3 == 0){
n/=3;
}
while (n % 5 == 0){
n/=5;
}
return (n == 1)?true:false;
}
int ugly_counter(int counter){
if (counter <= 0){
return 0;
}
int count = 0;
int uglyFound = 0;
while (uglyFound < counter){
++count;
if (IsUgly(count)){
++uglyFound;
}
}
return count;
}
int main(){
int result = ugly_counter(1500);
cout << result << endl;
system("pause");
return 0;
}