정말 좋지 않은 코드. 900번째까지 구하는데 2 초걸리고,
1000번째까지 구하는데 7초 걸린다...
1500번째꺼 구하도록 했더니... 76초 걸린다...
#include <iostream>
#include <ctime>
using std::cout;
using std::cin;
using std::endl;
using std::clock_t;
#define LIMIT 1500 // 배열 한계수
int main() {
int arr[LIMIT] = {0}, num, index = 0, target;
clock_t start,end; // 수행시간 구할 때 쓰려고 넣은 변수.
target = 1500; // 1500번째 수를 구하도록 할 때 쓰는 변수.
start = clock(); // 시작한 시간.
for(int i = 1;arr[target-1] == 0;i++) {
num = i;
while((num % 2) == 0) {
num /= 2;
}
while((num % 3) == 0) {
num /= 3;
}
while((num % 5) == 0) {
num /= 5;
}
if(num == 1) { // 2, 3, 5 로 나눴는데 몫이 1이면 못난이수.
arr[index] = i; // 몫이 1이 아니면 그냥 잡수.
index++;
}
}
end = clock(); // 끝난 시간.
cout << "Run time = " << (double)(end-start)/CLK_TCK << endl
<< arr[target-1] << endl;
return 0;
}