최소공배수를 구하는 여러가지 방법에 대해 정리해 보았다. 사실, 최소공배수를 구하는 여러 방법이 아닌 최대공약수를 구하는 여러 방법이 되겠다. 최소공배수는 두 수의 곱에서 최대공약수를 나눈 수이기 때문이다.
import sys
def gcd(a, b):
if a>b:
a, b = b, a
for i in range(a, 0, -1):
if a%i == 0 and b%i == 0:
break
return i
A, B = map(int, sys.stdin.readline().split())
print(A*B//gcd(A,B))
import sys, math
A, B = map(int, sys.stdin.readline().split())
print(A*B//math.gcd(A,B))
import sys
def gcd(a, b):
while b>0:
a, b = b, a%b
return a
A, B = map(int, sys.stdin.readline().split())
print(A*B//gcd(A,B))
처음에 왜 b가 0이 될 때까지 나머지를 구하는지, r을 r'로 나누는지를 몰랐는데 위키백과의 예시를 보고 이해가 되었다.
1071과 1029의 최대공약수를 구하면,
1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 42
1029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 21
42는 21로 나누어 떨어진다.
따라서, 최대공약수는 21이다.

문제의도에 맞게 유클리드 호제법으로 푼 결과이다.