[프로젝트 오일러/파이썬] Smallest multiple

2021. 4. 18. 22:46·Python & SQL/Python Problems
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?

1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520 이다.

그렇다면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마인가?

 

# 문제 : 최소공배수 구하기

  소인수 최소공배수
1 1 1(제외)
2 2 2
3 3 2*3
4 2^2 2^2*3
5 5 2^2*3*5
6 2*3 2^2*3*5
7 7 2^2*3*5*7
8 2^3 2^3*3*5*7
9 3^2 2^3*3^2*5*7
10 2*5 2^3*3^2*5*7 = 2520

 

# 풀이

1. 최대공약수(gcd)를 구하는 명령어가 담긴 math 모듈을 불러온다.

2. 파이썬에 없는 최소공배수를 구하는 함수 lcm(a, b)를 새로 만든다.

3. a×b = 두 수의 최소공배수 × 최대공약수라는 관계식을 이용해 lcm 함수를 정의한다.

4. 1부터 20까지 자연수의 최소공배수를 ‘ans’라는 변수로 나타내고, 1부터 시작한다.

5. ans의 초깃값이 1이므로 1은 제외하고, 2부터 20까지의 수를 i라는 변수로 나타낸다. 이때 나타내는 범위는 (시작 숫자, 마지막 숫자+1)이므로 (2, 21)이 된다.

6. ans와 i, 두 수 사이의 최소공배수를 구하는 함수를 이용해 1과 2의 최소공배수를 구하고, 그다음 1, 2의 최소공배수와 3의 최소공배수를 구하는 방식을 반복해 20까지 실행한다.

7. 1부터 20까지 자연수의 최소공배수를 출력한다.

 

1
2
3
4
5
6
7
import math
def lcm(a, b):
    return (a * b) // math.gcd(a, b)
num = 1
for i in range(2, 21):
    num = lcm(num, i)
print(num)  # 답: 232792560
cs

 

'Python & SQL > Python Problems' 카테고리의 다른 글

[파이썬 문제] 윤년(leap year) 알아내기  (0) 2021.04.30
[파이썬 문제] 중복 문자열 다루기  (0) 2021.04.26
[프로젝트 오일러/파이썬] Largest palindrome product  (0) 2021.04.18
[프로젝트 오일러/파이썬] Largest prime factor  (0) 2021.04.18
[프로젝트 오일러/파이썬] Even Fibonacci numbers  (0) 2021.04.18
'Python & SQL/Python Problems' 카테고리의 다른 글
  • [파이썬 문제] 윤년(leap year) 알아내기
  • [파이썬 문제] 중복 문자열 다루기
  • [프로젝트 오일러/파이썬] Largest palindrome product
  • [프로젝트 오일러/파이썬] Largest prime factor
J. Son
J. Son
Petit à petit l'oiseau fait son nid.
  • J. Son
    Steady Study Log
    J. Son
  • 전체
    오늘
    어제
    • 분류 전체보기 (170) N
      • Python & SQL (63)
        • Python Basics (21)
        • Python Problems (23)
        • Python Practice (11)
        • MySQL (1)
        • Git & GitHub (7)
      • ML & DL (7) N
      • Projects (5)
        • Project Portfolio (5)
      • AI Camp (4)
        • Camp Reflection (4)
      • Concept Notes (6)
        • Statistics & Stata (4)
        • Mathematics (2)
      • Archive (84)
        • Java (24)
        • R (1)
        • Languages (49)
        • Miscellaneous (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • GitHub
    • WikiDocs
  • 공지사항

  • 인기 글

  • 태그

    machine learning
    Stata
    프랑스어 공부
    Python
    복합과거
    머신러닝
    프로젝트 오일러
    어린왕자 프랑스어
    python problem
    객체
    파이썬 문제
    점프투파이썬 연습문제
    맥 git
    Github
    점프투파이썬 연습문제 풀이
    GIT
    share.streamlit.io
    passe compose
    MySQL
    streamlit
    자바
    어린왕자 불어
    불어 공부
    Le Petit Prince
    불어 관계대명사
    파이썬
    파이썬 크롤링
    파이썬 streamlit
    python streamlit
    초보자를 위한 파이썬 300제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
J. Son
[프로젝트 오일러/파이썬] Smallest multiple
상단으로

티스토리툴바