[데이터사이언스12기-스터디노트] 파이썬(23.02.11.)

도윤수·2023년 2월 12일
0

Python스터디노트

목록 보기
10/16
post-thumbnail

📝스터디노트 10일차 범위

기초수학 7~8(최소공배수)

📖 최소공배수 구하기

‣ 최소공배수는 어떠한 두 개 이상의 수가 같은 수가 되는 가장 낮은 배수의 수.
‣ 두 수의 곱을 최대공약수로 나누어 준 값이 최소공배수가 된다.

# 임의의 두 수에 대해 최대공약수, 최소공배수 출력한다.
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
maxNum = 0

for i in range(1, (num1 + 1)):
    if num1 % i == 0 and num2 % i == 0:
        print('공약수: {}'.format(i))
        maxNum = i

print('최대공약수: {}'.format(maxNum))

minNum = (num1 * num2) // maxNum
print('최소공배수: {}'.format(minNum))


1. 임의의 두 수를 입력 받고, 최대공약수를 담을 maxNum을 초기화해준다.
2. for 문이기 때문에 num1이 num2보다 작다는 가정하에 num1 + 1 만큼 반복해준다.
3. 마지막에 담기는 최대 공약수를 num1 * num2 // maxNum 에 사용하고 몫만을 가져오면 최소공배수이다.

최대공약수랑 비슷하게 세 개 이상의 수의 최소 공배수를 구할 수 있다.(약간 다름)

# 세 개의 수에 최소공배수를 출력한다.
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
num3 = int(input('1보다 큰 정수 입력: '))
maxNum = 0

for i in range(1, (num1 + 1)):
    if num1 % i == 0 and num2 % i == 0:
        print('공약수: {}'.format(i))
        maxNum = i

print('최대공약수: {}'.format(maxNum))

minNum = (num1 * num2) // maxNum
print('{}, {}의 최소공배수: {}'.format(num1, num2, minNum))

newNum = minNum
for i in range(1, (newNum + 1)):
    if newNum % i == 0 and num3 % i == 0:
        maxNum = i

print('최대공약수: {} '.format(maxNum))

minNum = (newNum * num3) // maxNum
print('{}, {}, {}의 최소공배수: {}'.format(num1, num2, num3, minNum))


1. 세 개의 수를 입력 받고 maxNum을 초기화 해준다.
2. 두 개의 수의 최대공약수, 최소공배수 구하는 과정은 같다.
3. 먼저 두 수에 대해 구해주고, 그 최소공배수를 newNum에 넣고 newNum과 num3에 대해 다시 돌린다.
4. 그렇게 나온 최소공배수는 num1, num2, num3에 대한 최소공배수이다.

같은 내용이지만 일상에 비유한다면, 어느 섬마을에 과일 파는 배(3일), 생선 파는 배(4일), 야채 파는 배(5일)가 전부 다 입항하는 날짜를 계산한다! 라고 볼 수 있다.

# 과일, 생선, 야채 판매 배가 입항할 때 모든 배가 입항하는 날짜 계산
ship1 = 3; ship2 = 4; ship3 = 5;
maxDay = 0

for i in range(1, (ship1 + 1)):
    if ship1 % i == 0 and ship2 % i == 0:
        maxDay = i

print('최대공약수 {}'.format(maxDay))

minDay = (ship1 * ship2) // maxDay
print('{}, {}의 최소공배수: {}'.format(ship1, ship2, minDay))

newDay = minDay
for i in range(1, (newDay + 1)):
    if newDay % i == 0 and ship3 % i == 0:
        maxDay = i

print('최대공약수 {}'.format(maxDay))

minDay = (newDay * ship3) // maxDay
print('{}, {}, {}의 최소공배수: {}'.format(ship1, ship2, ship3, minDay))


1. 똑같이 첫 배와 두 번째 배의 최소공배수를 구해주고,
2. 그 최소공배수를 가지고 세 번째 배와 다시 돌려주어서
3. 세 배의 동시 입항 일을 구해줄 수 있다.

★ 어려웠던 점 ★
1. 어려웠다기보다 공식을 알면 쉬웠던 부분,
⇨ 최소공배수 = 두 수의 곱 // 최대공약수
2. 연습해야 할 부분
⇨ 두 수의 최소공배수를 다른 변수에 넣어두고 그 변수를 세 번째 수와 반복문을 돌릴 수 있다!

🔥🔥바쁜시간 쪼개서 매일매일 성장해 나가는 모습을 기록하자🔥🔥

profile
DataScience를 하고 싶은 DoIT

0개의 댓글