본문 바로가기

오일러 프로젝트

오일러 프로젝트 8번 (Julia) 문제 다음은 연속된 1000자리 숫자입니다. (읽기좋게 50자리씩 잘라놓음)73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866.. 더보기
오일러 프로젝트 7번 문제 소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다. 이 때, 10,001 번째의 소수를 구하세요. 풀이 드디어 소수 판별 함수가 등장할 차례이다. 소수의 목록을 구하는 방법에는 크게 두 가지 가 있는데, 하나는 소수판별함수를 작성하여 루프를 돌거나 리스트를 필터링하는 것이고 다른 하나는 에라토스테네스의 체를 이용하는 것이다. 에라토스테네스의 체는 매우 빠르게 동작할 수는 있지만 범위를 알고 있는 경우에 유용할 수 있다. 소수의 분포에는 현재까지는 알려진 규칙이 없으므로 10,001 번째 소수가 어디쯤에 위치할지를 가늠할 수 없다. 따라서 소수 판별 함수를 통해서 2에서부터 소수를 하나씩 세어보는 수 밖에 없을 것 같다. 관건은 얼마나 빠른 소수 판별 함수를 작성.. 더보기
오일러 프로젝트 6번 문제 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합). 1^2 + 2^2 + ... + 10^2 = 385 1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱). (1 + 2 + ... + 10)^2 = 55^2 = 3025 따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다.그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 풀이 문제의 그대를 간단히 계산하면 된다. '차이'를 구하는 것은 큰 값에서 작은 값을 빼면 되는 것인데, 간단히 한쪽에서 다른 한쪽을 뺀 다음 그 절대값을 구하는 것과 같다. 절대값을 구하는 함수는 abs() 이다. .. 더보기
오일러 프로젝트 5번 (Julia) 문제 1~10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1~20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 풀이 어떤 수 A를 B로 나누었을 때 나머지가 0이라면 (즉, 나누어 떨어진다면) A는 B의 배수이다. 문제에서 예를 든 2520은 1의 배수이면서 2의 배수이자 동시에 3, 4, 5, ... , 10의 배수로 1과 10 사이의 모든 자연수의 공배수이다. 물론 이러한 공배수는 무한히 많지만 그 중에서 가장 작은 값이라 하였으니 최소공배수이다. 따라서 문제는 1~20의 모든 자연수의 최소 공배수를 구하는 문제라 할 수 있다. 셋 이상의 수의 최소 공배수를 구하려면 먼저 두 개의 자연수의 최소 공배수를 구하고, 다시 그 값과 나머지 하나의 수의 최.. 더보기
특별한 규칙을 갖는 0-9 팬디지털 숫자찾기 2 이전 글 에서 언급된 문제와 유사한 문제가 오일러 프로젝트에 있어서 같은 방법으로 풀어보고자 한다. 숫자 1406357289는 0-9팬디지털인데, 부분열에 관련된 재미있는 성질을 가지고 있습니다. d1을 첫째자리수, d2를 둘째자리수...라고 했을 때 다음과 같은 재미있는 사실을 발견할 수 있습니다. d2d3d4 = 406 : 2로 나눠짐 d3d4d5 = 063 : 3으로 나눠짐 d4d5d6 = 635 : 5로 나눠짐 d5d6d7 = 357 : 7로 나눠짐 d6d7d8 = 572 : 11로 나눠짐 d7d8d9 = 728 : 13으로 나눠짐 d8d9d10 = 289 : 17로 나눠짐 위와 같은 성질을 갖는 0~9 팬디지털을 모두 찾아서 그 합을 구하면 얼마입니까?(출처 : 오일러프로젝트 43 - http:.. 더보기