algorithm

알고리즘 기초 1/2 300-수학: 최대공약수와 최소공배수

park혀니 2025. 6. 6. 16:57

최대공약수와 최소공배수(python 2609)

첫 풀이는 시간초과가 발생함
생각보다 문제가 무겁구나..
틀린풀이

A, B = map(int, input().split())
m = 1
n = A * B

for i in range(1, A if A>=B else B):
    if A % i == 0 and B % i == 0:
        m = i

for i in range(n, 1, -1):
    if i % A == 0 and i % B == 0:
        n = i

print(m)
print(n)

혹시나 싶어 반복수를 줄여줘도 해결이 안됨

A, B = map(int, input().split())
m = 1
n = A * B

iter = A//2 if A>=B else B//2
for i in range(1, iter):
    if A % i == 0 and B % i == 0:
        m = i

iter = A if A>=B else B
for i in range(n, iter, -1):
    if i % A == 0 and i % B == 0:
        n = i

print(m)
print(n)

찾아보니 그냥 함수가 내장되어있음

import math

A, B = map(int, input().split())

print(math.gcd(A, B))
print(math.lcm(A, B))

아오