반응형
@문제
@문제풀이
두 가지 풀이가 있다.
1) 유클리드 호제법
2) 파이썬 math 라이브러리 사용
유클리드 호제법
자연수 A를 B로 나눌때 나머지 r이라면
유클리드 호제법은 A와B의 최대공약수는 B와 r의 최대공약수와 동일함을 의미한다.
그러면 B를 r로 나눌때 나머지 r2의 최대공약수도 A와B의 최대공약수와 동일하다.
그러면 r을 r2로 나눌때 나머지 r3의 최대공약수도 A와B의 최대공약수와 동일하다.
.
.
.
그러면 rn-2를 rn-1로 나눌때 나머지 rn이 0이 되면 rn-1이 최대공약수가 된다.
rn-1로 나눌 때 0이 되는 가장 큰 수 이기 때문이다.
최소공배수는 A*B를 A,B의 최대공약수로 나누었을때 몫이 최소공배수이다.
◎코드
유클리드 호제법
n,m = map(int,input().split())
def GCD (x,y) :
while(y) :
x,y = y,x%y
return x
def LCM (x,y) :
return (x*y)//GCD(x,y)
print(GCD(n,m))
print(LCM(n,m))
파이썬 math 라이브러리
import math
n,m = map(int,input().split())
print(math.gcd(n,m))
print(math.lcm(n,m))
반응형
'문제풀이 > Math' 카테고리의 다른 글
[PS] BOJ10610 30 ( Math ) with JAVA (0) | 2023.08.04 |
---|---|
[JAVA] 백준 9020번 골드바흐의 추측 : 소수의 합 (0) | 2021.07.22 |
[JAVA] 백준 1929번 소수 구하기 : 아리스토테네스의 체 (0) | 2021.07.21 |
[JAVA] 백준 1978번 소수 찾기 : 소수 (0) | 2021.07.20 |