기초 수학

[기초수학] 최소공배수

scone 2022. 4. 26. 16:32

[개념]

  • 두 개 이상의 수에서 공통된 배수를 공배수라고 한다.
  • 소인수 분해를 이용하면 최소공배수 및 공배수를 구할 수 있다.

[실습1]

num1, num2 = map(int, sorted(input().split()))
maxNum = 1
for n in range(2,num1+1):
    if num1%n == 0 and num2%n == 0 :
        maxNum=n
print('{}와 {}의 최대공약수는 {}입니다.'.format(num1,num2,maxNum))

minNum = num1*num2 // maxNum
print('{}와 {}의 최소공배수는 {}입니다.'.format(num1,num2,minNum))
'''
10 12
10와 12의 최대공약수는 2입니다.
10와 12의 최소공배수는 60입니다.

6 9
6와 9의 최대공약수는 3입니다.
6와 9의 최소공배수는 18입니다.
'''

코드해석

최대 공약수를 구한 뒤 (이전 게시글 참조)

입력 받은 두 수의 곱을 최대 공약수로 나누었다. ( 나눌 때 int로 표현해야 하므로 / 대신 //를 썼다. )

 

#처음 문제를 접하자마자 든 생각

소인수를 일일히 다 구한 후 겹치는 소인수를 제거 한 뒤 .......

 


[실습2] : 세개의 수를 가지고 해보자.

num1, num2, num3 = map(int, sorted(input().split()))
maxNum = 1
for n in range(2,num1+1):
    if num1%n==0 and num2%n==0 and num3%n==0 :
        maxNum=n
print('{}, {}, {} 최대공약수는 {}입니다.'.format(num1,num2,num3,maxNum))

minNum = num1*num2*num3 // (maxNum**2)
print('{}, {}, {} 최소공배수는 {}입니다.'.format(num1,num2,num3,minNum))
'''
6 12 18
12, 18, 6 최대공약수는 6입니다.
12, 18, 6 최소공배수는 36입니다.
'''

실습1 참조