본문 바로가기

전체 글

최대공약수와 최소공배수 최대 공약수와 최소 공배수최대 공약수와 최소 공배수를 계산하는 방법에 대해서 알아보자. 최대 공약수와 최소 공배수가 나오는 제법 유명한 문제로는 프로젝트 오일러의 5번 문제는 다음과 같다. 1~10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1~20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 이 문제는 결국 20이하의 자연수 전체의 최소 공배수가 얼마인지를 묻는다. 참고로 이 문제의 답은 매우 큰 수이기 때문에 C와 같이 큰 수를 기본적으로 지원하지 않는 언어에서는 큰 수의 곱셈을 계산하는 별도의 자료 구조와 알고리듬이 필요할 것이다. 이 글은 당연희 파이썬으로 푸는 방법을 소개한다.두 A, B 의 최소 공배수를 구하는 방법은 다음과 같다. 두 수 A.. 더보기
피보나치 수열 피보나치 수열 피보나치 수열은 1, 1, 2, 3, 5, 8... 과 같이 전개되는 수열로 처음 두 항이 모두 1이고 세번째 항 부터는 앞의 두 항의 합으로 이루어지는 수열이다. 중학교 과정에서 수열을 배울 때 잠깐 언급이 되는데, 프로그래밍을 공부하다보면 재귀와 관련하여 꼭 다시 만나게 되는 수열이다. 피보나치 수열의 수학적 정의는 다음과 같다. $$ F*{1}= 1, F*{2} = 1\\ F*{n} = F*{n-1} + F_{n-2} $$ 이 식을 바탕으로 피보나치 수열의 일반항을 구하는 코드를 파이썬으로 작성해보면 다음과 같은 함수를 작성할 수 있다. def fibonacci(n): if n < 3: return 1 return fibonacci(n-1) + fibonacci(n-2) 원래 점화식으.. 더보기