💬 오늘의 공부시간 PM 11:00~ AM 02:00


🔥 3주차 todo 리스트 (5/15~5/21)

파이썬 (중급문풀 5)
파이썬 (중급문풀 6~7)
파이썬 (중급문풀 8)
기초수학 (기초 1~2)



기초수학 (기초 3)
기초수학 (기초 4)
기초수학 (기초 5~6)
기초수학 (기초 7)
기초수학 (기초 1)
기초수학 (기초 2)
기초수학 (기초문풀 1)
기초수학 (기초문풀 2~3)
자료구조/알고리즘 (자료구조 1~2)
자료구조/알고리즘 (자료구조 3)
자료구조/알고리즘 (자료구조 4)

📝 weekly 데이터 사이언스 스쿨 퀴즈
📝 재복습weekly 데이터 사이언스 스쿨 퀴즈

💻 핵심 내용 정리

📝 약수

  • 어떤 수를 나누어 떨어지게 하는 수
    나머지가 나오면 약수가 아니다.

실습_01

파이썬을 이용해서 사용자가 입력한 숫자의 약수를 출력해보자.

inputNumber = int(input('0보다 큰 정수 입력: '))

for number in range(1, inputNumber + 1):
    if inputNumber % number == 0:
        print('{}의 약수: {}'.format(inputNumber, number))

📝 소수

  • 1과 자신만을 약수로 가지는 수
    1과 본인 자신의 수 밖에 없다.

실습_02

파이썬을 이용해서 사용자가 입력한 숫자까지의 소수를 출력해보자.

inputNumber = int(input('0보다 큰 정수 입력: '))

for number in range(2, inputNumber + 1):
    flag = True

    for n in range(2, number):
        if number % n == 0:
            flag = False
            break

    if flag:
        print('{} : 소수!!'.format(number))
    else:
        print('{} : \t\t 합성수!!'.format(number))

📝 소인수

  • 약수(인수)중에서 소수인 숫자를 소인수라고 한다.

12의 소인수?
1, 2, 3, 4, 6, 12


📝 소인수분해

  • 1보다 큰 정수를 소인수의 곱으로 나타낸 것을 소인수 분해라고 한다.

20의 소인수 분해?
2^2 x 5 = ( 2 x 2 x 5)


📝 소인수분해와 약수

  • 소인수 분해를 이용해서 약수를 정확하고 쉽게 구할 수 있다.

20의 소인수 분해?
1, 2, 4, 5, 10, 20


실습_03

파이썬을 이용해서 사용자가 입력한 수를 소인수분해하자.

inputNumber = int(input('1보다 큰 정수 입력: '))

n = 2
while n <= inputNumber:
    if inputNumber % n ==0:
        print('소인수: {}'.format(n))
        inputNumber /= n
    else:
        n += 1

📝 최대공약수

  • 두개 이상의 수에서 공통괸 약수를 공약수라고 한다.
  • 소인수분해를 이용하면 최대공약수 및 공약수를 구할 수 있다.
    공통인 소인수의 거듭제곱에서 지수가 작은 수를 모두 곱한다.
  • 좀더 편리하게 최대공약수를 구하는 방법 → 소수로 나눗셈을 하자!
    나눠지지 않을때까지 나누기

12와 20의 공약수?
1,2,4 (4의 약수)


실습_04

두개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성하자.

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))

📝 유클리드 호제법

  • 유클리드 호제법을 이용해서 최대공약수를 구할 수 있다.
    x, y의 최대공약수는 y, r(x % y)
    나머지가 0 일때까지 나눗셈한다.

실습_05

유클리드 호제법을 이용해서 최대공약수를 구할수 있다.

num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))

temp1 = num1; temp2 = num2

while temp2 > 0:
    temp = temp2
    temp2 = temp1 % temp2
    temp1 = temp

print('{}, {}의 = 최대공약수: {}'.format(num1, num2, temp1))

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

📝 공배수

  • 두개 이상의 수에서 공통된 배수를 공배수라고 한다.

3, 5의 배수
15,30....


📝 최소공배수

  • 공배수 중 가장 작은 수를 최소공배수라고 한다.
  • 소인수분해를 이용하면 최소공배수 및 공배수를 구할 수 있다.
  • 좀 더 편리하게 최소공배수 구하는 방법 → 소수로 나눗셈하자.

실습_06

두개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자.

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))

실습_07

세개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자.

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(minNum))

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

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

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

실습_08

섬마을에 과일, 생선, 야채를 판매하는 배가 다음 주기로 입할한다고 할떄, 모든 배가 입항하는 날짜를 계산해보자.

과일 선박: 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))

print('{}일마다 모든 선박이 입항합니다.'.format(minDay))

💡 오늘을 마무리하면서 ...

진짜 인풋이 제대로 되고 있는건지 모르곘다 ㅠㅠ 머리 터질 것만 같아


😃 Busy Study _ 새벽반 PM 10:00 ~ AM 2:30

여러분 화이팅!! 우리 모두 다 잘 될거예요!

profile
늦깎이 DA/DS 취준생, 이곳은 스터디노트 겸 성장기록장(소통환영이요💜)

0개의 댓글