728x90
300x250
1.유클리드호제법
첫번째 방식은 유클리드 호제법으로 푼 내용이다.
일종의 공식과 같은 것이니, 네이버나 구글 찾아보면
유클리드호제법이라고 설명이 잘 나와있다.
i,j = map(int,input().split())
n,m = max(i,j),min(i,j)
while m>0:
n,m = m,n%m
print(n)
print((i*j)//n)
#24,18->18,6->6,0 n=6
#24*18/6 = 72
입력받는 두 수 중 큰수와 작은 수를 먼저 n,m에 다시 저장하고
m>0조건에서 while문을 돌려서 n에는 m을 m에는 n%m(나머지수)를 저장한다.
n은 최대공약수
(i*j)//n은 최소공배수를 나타낸다.
문제에서 24,18을 입력하면
24,18->18,6->6,0 이렇게 되서 n=6
24*18/6 =72 m은 72가 된다.
2.for문
유클리드호제법을 몰랐다면 있는 그대로 for문을 돌려준다.
tmp라는 리스트를 하나만들고,
1부터 두 수중 작은 수까지 for문을 돌린다.
나누었을때 나누어 떨어지는 수를 tmp에 더하고 sorting해준다.
그럼 마지막 수가 가장 큰 수이다.
최대공약수는 tmp리스트의 마지막 수이고
최소공배수는 마지막수 * 마지막수를 나눈 각 몫을 곱해주면 된다.
a,b = map(int,input().split())
tmp = []
for i in range(1,min(a,b)+1):
if a%i == 0 and b%i ==0:
tmp.append(i)
tmp.sort()
print(tmp[-1])
print(tmp[-1]*(a//tmp[-1])*(b//tmp[-1]))
3.파이썬 함수 활용
파이썬 함수에는 최대공약수,최소공배수가 있어서 그냥 그대로 함수만 써주면 끝이다.
import math
a, b = map(int, input().split())
print(math.gcd(a,b))
print(math.lcm(a,b))
728x90
'내맘대로IT > Python' 카테고리의 다른 글
백준 파이썬 1292 쉽게 푸는 문제 (1) | 2023.11.24 |
---|---|
백준 파이썬 2693 N번째 큰 수 (0) | 2023.11.16 |
백준 파이썬 10870번 피보나치수 5 (0) | 2023.11.14 |
백준 파이썬 2309번 파이썬 문제풀이(일곱난쟁이) (0) | 2023.11.13 |
백준 3460 파이썬 이진수 (1) | 2023.05.17 |