๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/ALGORITHM

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (์ตœ๋Œ€๊ณต์•ฝ์ˆ˜), ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

by DevIseo 2022. 6. 1.

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•


์˜๋ฏธ: ์ตœ์ดˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(-ไบ’้™คๆณ•, Euclidean algorithm) ๋˜๋Š” ์œ ํด๋ฆฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 2๊ฐœ์˜ ์ž์—ฐ์ˆ˜ ๋˜๋Š” ์ •์‹(ๆ•ดๅผ)์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜์ด๋‹ค. (์ถœ์ฒ˜:wikipedia)

 

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ

1. a,b ๊ฐ๊ฐ์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด ๊ณตํ†ต๋˜๋Š” ์•ฝ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’ ์ฐพ๊ธฐ

2. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

์ˆซ์ž a,b๊ฐ€ ์กด์žฌํ•  ๋•Œ, a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์™€ b์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋Š” a์™€ b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๊ฐ™์Œ.

๋”ฐ๋ผ์„œ, ๊ณ„์†ํ•ด์„œ a๋ฅผ b๋กœ ๋‚˜๋ˆ„์–ด b๋ฅผ a์—, ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ b์— ๋Œ€์ž…์‹œ์ผœ b๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๋‚จ๋Š” a๊ฐ’์ด ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊ฐ€ ๋œ๋‹ค!

def gcd(a,b):
    while b>0:
        a,b = b,a%b
    return a

 


 

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜ a,b์˜ ๋ฐฐ์ˆ˜์ค‘์—์„œ ๊ณตํ†ต๋˜๋Š” ๋ฐฐ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’.

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” a,b์˜ ๊ณฑ์„ a,b์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ„๋ฉด ๋‚˜์˜ค๊ฒŒ ๋จ!

def gcd(a,b): #์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
    while b>0:
        a,b = b,a%b
    return a
def lcm(a,b): #์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
    return int(a*b/gcd(a,b))

๋Œ“๊ธ€