기초 수학_1

YJ·2023년 3월 14일

▷ 오늘 학습 내용: 기초수학 강의(1~3)

01_약수와 소수

  • 사용자가 입력한 숫자까지의 소수 구하기
    inputNum = int(input('0보다 큰 정수 입력: '))

    for number in range(2,inputNum+1):

        flag = True

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

        if (flag):
            print('{}: 소수'.format(number))

        else:
            print('{}: 합성수'.format(number))

02_소인수분해

  • 사용자가 입력한 수를 소인수분해 하기
    inputNum = int(input('1보다 큰 정수 입력: '))

    n=2

    while n <= inputNum:

        if inputNum % n == 0:
            print('소인수: {}'.format(n))
            inputNum = inputNum / n

        else:
            n += 1
  • 사용자가 입력한 수에 x를 곱하면 y의 제곱이 된다고 할 때, x에 해당하는 가장 작은 정수 구하기
    inputNum = int(input('1보다 큰 정수 입력: '))

    n=2

    searchNums = []

    while n <= inputNum:

        if inputNum % n == 0:
            print('소인수: {}'.format(n))

            if searchNums.count(n) == 0:
                searchNums.append(n)
            elif searchNums.count(n) == 1:
                searchNums.remove(n)
            inputNum /= n

        else:
            n += 1

    print(searchNums)

03_최대공약수

  • 유클리드 호제법을 이용해서 최대공약수 구하기
    x, y의 최대공약수는 y, r(x%y)의 최대공약수와 같다.
    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))

04_최소공배수

  • 세 개의 수의 최소공배수 구하기
    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:
            maxNum = i

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

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


    newNum = minNum

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

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

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

05_진법

  • 10진수를 X진수로 변환하기

    1) 2진수로 변환: bin() ← binary
    2) 8진수로 변환: oct() ← octal
    3) 16진수로 변환: hex() ← Hexadecimal

  • 변환 결과는 int가 아닌 str 형식
  • X진수를 10진수로 변환
  • X진수를 X진수로 변환

📝 기초 수학 개념은 어느 정도 알고 있었지만 막상 파이썬에서 적용하려고 하니까 어떻게 해야될지 고민이 됐다. 예제에서 반복문(for, while문)이 자주 사용되는걸 보니까 반복문이 중요하게 느껴졌다. 진법 파트에서는 bin, oct, hex 함수를 처음 봐서 생소했고, int는 정수형을 나타내는 것으로만 알고 있었는데 10진수 함수로도 쓰인다는 것을 알았다.

▷ 내일 학습 계획: 기초수학 강의(4~7)

[이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.]

0개의 댓글