Project Euler - Problem 5.
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
- 2520은 1에서 10 사이의 수 중 어떤 수로 나누더라도 나누어 떨어지는 수 입니다. 양수 중 1부터 20까지의 모든 수로 나누어 떨어질 수 있는 가장 작은 수는 무엇일까요?
- 1 ~ 20까지의 최소공배수를 구하는 문제입니다.
유클리드 호제법
1. 큰 수에서 작은 수를 나눈 나머지를 구합니다.
- 큰 수, 작은 수의 구분은 없고 처음 수와 나중 수가 의미가 있습니다.
2. 작은 수가 큰 수, 나머지가 작은 수의 역할을 하며 1의 과정을 다시합니다.
3. 2의 과정을 하다가 나머지가 0이면 종료합니다.
4. 마지막으로 나눈 값이 최대공약수 입니다. (아래 코드 중 int GCD(int num1, int num2) 함수 참고)
최소공배수
최소공배수 = 큰 수 * 작은 수 / 최대공약수
두 숫자 이상의 최소공배수 구하기
최소공배수 = 이전 숫자의 최소공배수 * 새로운 숫자 / 이전 숫자의 최소공배수와 새로운 숫자의 최대공약수
- 모든 숫자가 끝날 때까지 반복
두 숫자 이상의 최대공약수 구하기
1. 처음 하나의 숫자를 최대공약수와 최소공배수로 정의합니다.
- 숫자가 하나일 때에는 그 수가 최대공약수이자 최소공배수이기 때문입니다.
2. 지금까지 구해놓은 최대공약수와 새로운 수로 최대공약수를 구합니다.
3. 또 지금까지 구해놓은 최소공배수와 새로운 수로 최소공배수를 구합니다.
- 최소공배수 * 새로운 수를 나눌때에는 현재 곱하는 두 수의 최대공약수로 나누어야 합니다.
4. 2, 3과정을 모든 숫자가 끝날 때까지 반복합니다.
'Basics > Euler Project' 카테고리의 다른 글
Problem 7. 10001번째 소수는? (0) | 2014.11.03 |
---|---|
Problem 6. 1 ~ 100까지의 합의 제곱과 제곱의 합의 차이 (0) | 2014.11.03 |
Problem 4. 두 개의 세 자리 숫자를 곱해서 만들 수 있는 가장 큰 대칭수는? (0) | 2014.11.03 |
Problem 3. 600851475143의 가장 큰 소인수 구하기 (0) | 2014.11.03 |
Problem 2. 피보나치 수열 중 4백만 이하 짝수의 합 (0) | 2014.11.03 |