[5/25] 2609 (최대공약수와 최소공배수)
내 코드
a, b = map(int, input().split())
if (a < b):
a, b = b, a
for i in range(1, b+1):
if (a % i == 0 and b % i == 0):
maxx = i
minn = int((a * b) / maxx)
print(maxx, minn)
풀이
- a와 b를 비교해 큰 수를 a로 지정한다.
- for문을 사용하여, 약수를 maxx라고 지정한다. 결국 가장 큰 약수가 저장된다.
- 최소공배수 구하는 공식은 '두 수의 합 / 최대공약수' 이다.
효율적인 코드
a,b = map(int,input().split())
def gcd(a, b) :
if b==0:
return a
else :
return gcd(b,a%b)
def lcm(a, b) :
g = gcd(a,b)
return int((a * b) / gcd(a, b))
print(gcd(a,b))
print(lcm(a,b))
피드백
- 최대공약수는 재귀함수와 유클리드 호제법을 이용하면 간단하다.
배운 것
- 재귀함수 로직
Author And Source
이 문제에 관하여([5/25] 2609 (최대공약수와 최소공배수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kj313903/525-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)