https://codeup.kr/problem.php?id=4016
[문제 1] 세 수의 최대공약수 구하기 [16점]
(제한시간 1초, 부분점수 없음)
세 수 를 입력받아 세 수의 최대공약수를 구하는 프로그램을 작성하시오.
첫째 줄에 세 수 가 주어진다.(단,1 <= a <= b <= c <= 100,000 )
4 8 10
출력내용은 세 수 의 최대공약수를 출력한다.
2
유클리드 호제법을 이용하여 문제를 풀면 쉽게 풀 수 있다.
두 수인 경우에는 (x,y) 를 나누고, 그 나머지값이 0이 아닌 경우 나머지값을 나누어 0이 될 때까지 진행하면 된다.
세 수인 경우에는 (x,y,z) 라고 했을때 ((x,y),z) 라고 생각하고 진행해도 무방하다.
위키 참고하며 코드를 작성하였다.
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
# https://codeup.kr/problem.php?id=4016
num_arr = list(map(int,input().split()))
def GCD(a,b):
while b != 0:
a, b = b, a%b
return a
gcdnum = num_arr[0]
for i in range(len(num_arr)):
gcdnum = GCD(gcdnum,num_arr[i])
print(gcdnum)