CS/알고리즘_문제풀이(파이썬)

GCD LCM

Jedy_Kim 2021. 5. 10. 19:23
728x90

문제


두 개의 자연수를 입력받아 최대공약수(GCD)와 최소공배수(LCM)를 출력하는 프로그램을 작성하시오.  

입력


첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000 이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

 

출력


첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소공배수를 출력한다.

 

예제 입력 

24 18

예제 출력 

6

72

 

#유클리드 호제법을 통한 접근법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vals = list(map(int, input().split()))
 
def gcd(valA, valB): 
  if valA % valB == 0
    print(valB)
    lcm(valB)
    return valB 
  gcd(valB, valA%valB)
 
def lcm(gVal): 
  result = int(vals[0]/gVal) * int(vals[1]/gVal) * gVal
  print(result) 
  
 
gcd(vals[0], vals[1])
 
cs

# 그냥 for문을 통한 접근법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vals = list(map(int, input().split()))
 
if vals[0< vals[1]:
  vals[0], vals[1= vals[1], vals[0]
 
gcdVal = 0
lcmVal = 0
for i in range(1, vals[1]+1):
  if vals[0] % i == 0 and vals[1] % i == 0
    gcdVal = i
 
lcmVal = int(vals[0]/gcdVal) * int(vals[1]/gcdVal) * gcdVal
print(gcdVal)
print(lcmVal)
 
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

rook  (0) 2021.05.11
maxofarr  (0) 2021.05.10
상자 꾸미기  (0) 2021.05.10
offset  (0) 2021.05.10
백준 - 스택 수열 #1874  (0) 2021.03.30