Programing/프로그래머스 오답노트
최대공약수, 최소공배수 (유클리드 호제법,)(약수)
yooom
2023. 9. 11. 22:57
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
풀이
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
def solution(n,m):
return gcd(n,m), n*m/gcd(n,m)
또는
import math
def solution(n, m):
gcd = math.gcd(n,m)
lcm = n*m/gcd
return gcd, lcm
========================== 최대 공약수 구하기 기록 ================================
최대 공약수를 구하는 법은
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
혹은
def gcd(a, b):
if a % b == 0:
return b
elif b == 0:
return a
else:
return gcd(b, a % b)
로 표현하면 된다.
math 라이브러리를 사용해도 된다.
import math
math.gcd(a, b) # a = 21, b = 28
최소 공배수는 두 수를 곱한 뒤 최대 공약수로 나눠주면 된다.
def lcm(a, b):
return a * b / gcd(a, b)
약수 구하는 방법은
def sol(n):
divisor = []
for i in range(1, int(n**(1/2)) + 1):
if (n % i == 0):
divisor.append(i)
if ( (i**2) != n) :
divisor.append(n // i)
divisor.sort() # n = 16이라면 (1, 16, 2, 8, 4)가 출력
return divisor
출처
https://school.programmers.co.kr/learn/courses/30/lessons/12940?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90