최대공약수를 어떤 방법으로 계산할 수 있을까?
-> 유클리드 호제법을 사용하면 간단하게 계산할 수 있다.
💡유클리드 호제법:
2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
c = a % b
a = b
b = c
최소공배수를 어떤 방법으로 계산할 수 있을까?
-> 피연산자들을 곱해서 최대공약수를 나누면 구할 수 있다.
import sys
A, B = map(int, sys.stdin.readline().split())
a, b = A, B
while b != 0:
a = a % b
a, b = b, a
print(a)
print(A*B//a)
💡 다른 방법으로는 함수로 만들어도 수월하게 된다.
def gcd(a, b):
while a % b > 0:
c = a % b
a = b
b = c
return b
def lcm(a, b):
return a * b // gcd(a, b)
print(gcd(a, b))
print(lcm(a, b))
<import math
print(math.gcd(a, b))
print(math.lcm(a, b))