본문 바로가기
반응형

소수 찾기2

501. 프로젝트 오일러 #501 : 약수의 갯수가 8개인 수 찾기 그동안 프로젝트 오일러 문제를 1번부터 차례대로 풀다가, 좀 지겹다는 생각이 들더군요. 현재까지는 32개의 문제를 차례대로 풀어나갔는데요. 과연 뒤에 있는 문제들은 어떨까 생각이 들어서 찾아보았습니다. 뒤에 있는 문제는 도저히 일반적인 방법으로 풀지 못 하는 것들이네요.정답자도 십여명이고... 일단 도전하기로 했는데, 이 문제는 소수의 갯수를 알아야 풀 수 있는 문제인지라, 상당히 어렵네요. 숫자의 범위가 작으면 어떻게든 풀겠지만요. 앞에 있는 문제가 실제 프로그램 돌렸을 때, 1초 이내에 나온 것에 비해서, 이 문제는 며칠 이상이 걸릴 문제네요. 소수의 갯수는 숫자가 커지면, 그에 정비례는 아니지만, 꾸준하게 증가합니다. 약수의 갯수가 8개인 수들도 꾸준하게 증가하는데, 그 숫자의 증가속도가 좀 빠릅니.. 2015. 2. 6.
7. 프로젝트 오일러 #7 : 10,001번째 소수 찾기 큰 수에 대한 소수를 찾는 것이라면, 응당 다른 방법을 택해야 하겠지만, 비교적 작은 소수에 대해서는 에라스토테네스의 체 이상 가는 알고리즘이 별로 없습니다. 특히 이번 문제와 같이 10,0001번째 소수 찾기라면 더더욱 말이죠. 알고리즘 자체는 아주 간단합니다. 소수를 저장할 수 있는 배열 공간을 잡고, 여기에 차곡차곡 소수를 담아넣습니다. 일단 2를 제외한 모든 소수는 홀수이므로, 검사해야 하는 수를 절반으로 줄일 수 있습니다. 2를 제외한다면, 소수는 다음과 같이 표현될 수 있습니다. 2와 3을 제외한다면, 소수는 다음과 같이 표현될 수 있습니다. 2, 3, 5를 제외한다면, 소수는 다음과 같이 표현됩니다. 일반적으로 우리는 오일러 수만큼 해당하는 소수만 검사하면 됩니다. 제외하는 소수가 몇개이든 .. 2014. 12. 23.
728x90