Done is Better Than Perfect

[μ•Œκ³ λ¦¬μ¦˜] μ΅œλŒ€ κ³΅μ•½μˆ˜, μ΅œμ†Œ 곡배수 λ³Έλ¬Έ

πŸ€– AI/κ°œλ°œκ³΅λΆ€

[μ•Œκ³ λ¦¬μ¦˜] μ΅œλŒ€ κ³΅μ•½μˆ˜, μ΅œμ†Œ 곡배수

jimingee 2021. 8. 3. 00:19

μ˜€λŠ˜μ€ 파이썬의 κΈ°μ΄ˆμ€‘μ˜ 기초! μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œ 곡배수λ₯Ό ν’€μ–΄λ³΄μž!!

 

μ΅œλŒ€ κ³΅μ•½μˆ˜(Greatest Common Divisor)λŠ” κ³΅μ•½μˆ˜ 쀑에 κ°€μž₯ 큰 수 이닀.  κ³΅μ•½μˆ˜λŠ” λ™μ‹œμ— κ·Έλ“€ λͺ¨λ‘μ˜ μ•½μˆ˜μΈ μ •μˆ˜μ΄λ‹€. 

μ΅œμ†Œ 곡배수(Least Common Multiple)λŠ”  곡배수 쀑에 κ°€μž₯ μž‘μ€ 수 이닀. κ³΅λ°°μˆ˜λŠ” λ™μ‹œμ— κ·Έλ“€ λͺ¨λ‘μ˜ 배수인 μ •μˆ˜μ΄λ‹€. 

 

1. μ΅œμ†Œ 곡배수 GCD(Greatest Common Divisor)

 

μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ΄λž€?

2개의 μžμ—°μˆ˜(λ˜λŠ” 정식) a, b μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” b와 a-b의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ κ°™λ‹€. (a>b)

 

μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²• - μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전

μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•(-互陀法, Euclidean algorithm) λ˜λŠ” μœ ν΄λ¦¬λ“œ μ•Œκ³ λ¦¬μ¦˜μ€ 2개의 μžμ—°μˆ˜ λ˜λŠ” 정식(整式)의 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ ν•˜λ‚˜μ΄λ‹€. ν˜Έμ œλ²•μ΄λž€ 말은 두 μˆ˜κ°€ μ„œλ‘œ(δΊ’) μƒλŒ€λ°© 수λ₯Ό

ko.wikipedia.org

 

def GCD():
    a,b = map(int, input().split())

    # λ‚˜λ¨Έμ§€κ°€ 0μΌλ•Œ κΉŒμ§€ 반볡
    while b != 0:
        a,b = b, a % b

    return a

μœ„μ˜ μ½”λ“œκ°€ μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μœΌλ‘œ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό ꡬ할 수 μžˆλŠ” μ½”λ“œμ΄λ‹€. (a <= b 인 경우)

μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ— 따라, bλ₯Ό r둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ r'λ₯Ό κ΅¬ν•˜κ³ , λ‹€μ‹œ r을 r'둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό κ΅¬ν•˜λŠ” 과정을 λ°˜λ³΅ν•˜μ—¬

λ‚˜λ¨Έμ§€κ°€ 0이 λ˜μ—ˆμ„ λ•Œ λ‚˜λˆ„λŠ” μˆ˜κ°€ a와 b의 μ΅œλŒ€κ³΅μ•½μˆ˜μ΄λ‹€.

 

 

 

2. μ΅œμ†Œ 곡배수 GCD(Greatest Common Divisor)

 

μ΅œλŒ€ κ³΅μ•½μˆ˜ λ‘œμ§μ„ μ•Œλ©΄ μ΅œμ†Œ κ³΅λ°°μˆ˜λ„ μ‰½κ²Œ ꡬ할 수 μžˆλ‹€.

def LCM():
    a, b = map(int, input().split())
    A, B = a, b

    while b != 0:  # μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•
        a, b = b, a % b

    return (A*B//a)

μ΅œμ†Œ κ³΅λ°°μˆ˜λŠ” 2개의 μžμ—°μˆ˜μ˜ κ³± / μ΅œλŒ€ κ³΅μ•½μˆ˜ μ΄λ―€λ‘œ μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μœΌλ‘œ κ΅¬ν•œ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ ꡬ할 수 μžˆλ‹€. 

 

Comments