두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
출처 : https://www.acmicpc.net/problem/2609
A를 B로 나눈 나머지 값을 N이라고 했을 때,
A와 B의 최대공약수 == B와 N의 최대공약수Idea ↓
나머지가 0이 될때까지 A, B = B, N 으로 바꾸자
1. 조건문이 N != 0 인 while 반복문 이용
2. 안에 if문 갖는 while True문 이용
3. 리턴값 갖는 함수 이용
A를 B로 나눈 나머지 값 N이 0일 때, B가 최대공약수최소공배수 = A * B / 최대공약수
# 1. 조건문이 N != 0 인 while 반복문 이용 a,b=map(int, input().split()) n=a%b # a와 b의 나머지 newA,newB=a,b while n!=0: newA,newB=newB,n n=newA%newB print(newB) # 최대공약수 m=(a*b)//newB print(m) # 최소공배수 # 2. 안에 if문 갖는 while True문 이용 a,b=map(int,input().split()) n=a%b # a와 b의 나머지 A,B=a,b #복사 while True: if n==0: print(B) # 최대공약수 print((a*b)//B) break A,B=B,n n=A%B # 3. 리턴값 갖는 함수.ver a,b=map(int,input().split()) def gcd(a, b): n=a%b while n>0: a,b=b,n n=a%b return b def lcm(a, b): return (a*b)//(gcd(a,b)) print(gcd(a,b)) print(lcm(a,b))