Tag: euclidean algorithm
All the articles with the tag "euclidean algorithm".
BOJ3036SILVER 4
ring = list(map(int, input().split()))
first = ring[0]
rings = ring[1:]
def gcd(a, b):
while a % b != 0:
r = a % b
a, b = b, r
return b
for r in rings:
if first % r == 0:
print(f"{first // r}/1")
elif r % first == 0:
print(f"1/{r // first}")
else:
g = gcd(first, r)
print(f"{first // g}/{r // g}")링
백준 3036번 '링' (실버 4) 문제 풀이. math, number theory, euclidean algorithm 로 접근했다.
BACKGROUNDEuclidean
이고 를 로 나눈 나머지를 이라 하자. ()
의 최대 공약수를 라고 하면, 다음이 성립한다.
출처: wikipidia
이 0이 될 때 알고리즘을 멈추며, 이 때의 가 최대공약수가 된다.
예를 들어 1460과 1037에 대해 알고리즘을 진행해보면 다음과 같다.
\begin{flalign*} (1460, 1037)\\=(1037, 323)\\=(323, 68)\\=(68, 52)\\=(52, 16)\\=(16, 4)\\=(4,0) \end{flalign*}이 0일때 가 4이므로 1460과 1037의 최대공약수는 4이다.
유클리드 호제법
유클리드 호제법은 2개의 자연수에 대해 최대공약수를 구하는 알고리즘이며 다음과 같은 성질을 통해 알고리즘을 진행한다.