最近在阅读《算法新解》(刘新宇 著),书写得很不错,推荐程序们阅读。前言中有个例子,是寻找第1500个丑数,所谓丑数是指仅含2、3、5这三个素因子的自然数。作者在书中给出了伪代码。作为练习,记录下自己的代码。
一、暴力查找法
算法思路 :迭代每个自然数,逐一判断是否是丑数,并观察累计计数是否达到1500,如果是,则成功找到了第1500个丑数
#include <iostream>
#include <limits.h>
#include <time.h>
using namespace std;
bool isUgly(int);
int main() {
cout << "寻找第1500个丑数" << endl;
clock_t start_time = clock();
int count = 1; //我们认为1是第1个丑数
for(int i=2;i<INT_MAX;i++){
if(isUgly(i)){
if(++count == 1500) {
cout << "第1500个丑数是: " << i << endl;
break;
}
}
}
clock_t end_time = clock();
cout << "运行总耗时(秒): " << static_cast<double>(end_time - start_time)/CLOCKS_PER_SEC << endl;