본문 바로가기
Data Science/Python Introduction

[5일차] 기초수학 왕창 듣는데, 파이썬 구현하는 거에 맛 들림

by 루크 Luke 2021. 10. 13.
반응형

[최대 공약수]

- 두 개 이상의 수에서 공통된 약수를 공약수라고 함

- 소인수분해를 하면 최대공약수 및 공약수를 구할 수 있다.

- 겹치는 소인수를 다 곱하면 최대공약수!

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

- 파이썬으로 최대공약수를 구하는 것은 "for문과 유클리드호제법"으로 구한다.

- 유클리드 호제법 : x, y의 최대공약수는 y, r(=x%y)의 최대공약수와 같다.

진짜 신박하다. 너무 신난다.

[최소 공배수]

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

- 공통인 소인수의 지수가 큰 값 * 공통이 아닌 모든 소인수

- 파이썬에서 최소공배수 : 최대공약수 구함 -> 최대공약수로 각각 나눈 값을 구함 -> 최대공약수와 그 값들 다 곱!

예제) 최소공배수 출력 프로그램 

 

[진법]

- 특정 숫자 몇 개를 사용하여 수를 표시하는 방법이다.

- 10진수를 N진수로 바꿀 때 : N으로 나눠서 나머지 줍줍하면 됨!

  -> divmod() 쓰면 될 거 같다.

- N진수를 10진수로 바꿀 때 : 각 자리수별로 N의 M제곱 형태를 모두 더하면 됨!

- bin() : 2진수로 바꾸는 함수

- oct() : 8진수로 바꾸는 함수

- hex() : 16진수로 바꾸는 함수

- 변환한 결과는 문자열이다!

- format() 함수를 이용하면, #b, #o, #x로 쓰면 된다.

format() 함수로 진법 변환

- 10진수로 바꾸는 함수는 int()임.

int() 함수로 진법 변환

[수열]

- 규칙성을 가지고 나열되어 있는 수들

- 특정항은 특정항까지의 합에서 특정항 이전의 항까지의 합과 같다.

- A(n) = S(n) - S(n-1)

- 등차수열 : 연속된 두 항의 차이가 일정한 수열 ex) 2,4,6,8,10,12,14,16

  -> A(n) = A(1) + (n-1) d   # d는 공차

  -> 등차 중항 A(n) = ( A(n-1) + A(n+1) ) / 2

  -> n항까지의 합 : S(n) = n ( A(1) + A(n) ) / 2

- 등비수열 : 연속된 두 항의 비율이 일정한 수열 ex) 2,6,18,54,162

  -> A(n) = A(1) * r^(n-1)   # r은 공비

  -> 등비 중항 A(n) ^2 = A(n-1) * A(n+1)

  -> S(n) = { A(1) * (1 - r^n) } / (1 - r)

- 시그마(수열의 합을 나타냄)

- 계차수열 : 어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열

- 계차수열 구현하는 프로그램

# 계차수열 함수로 정의
def b_function(a1, a2, a3, k):
    return (a2 - a1) + (k-1) * (a3 - 2 * a2 + a1)

# 초기값 입력
print("계차수열의 아래 항을 입력해주세요.")
a1 = int(input("첫째 항 입력: "))
a2 = int(input("둘째 항 입력: "))
a3 = int(input("셋째 항 입력: "))
N = int(input("몇 번째 항을 계산해드릴까요? "))

# 계차수열의 합
b_list = []
for n in range(1, N):
    b_list.append(b_function(a1, a2, a3, n))

sum_b = sum(b_list)

print(f"{N}항의 값은 {a1 + sum_b}입니다.")

- 피보나치 수열 : A(n) = A(n-2) + A(n-1)  ex) 1,1,2,3,5,8,13,21

- 팩토리얼 : 1부터 양의 정수 n까지의 정수를 모두 곱한 것

  -> 0!은 1로 약속한다.

  -> 재귀함수를 이용한 팩토리얼 구현

def factorialFun(n):
    if n == 1: return 1

    return n * factorialFun(n - 1)

print(f'{factorialFun(10)}')

코딩 실행 결과

  -> 팩토리얼은 math 모듈에서 꺼내서 쓸 수 있다.

import math
input_N = int(input("정수를 입력하세요"))
print(f"{math.factorial(input_N)}")

- 군수열 : 여러 개의 항을 묶었을 때 규칙성을 가지는 수열

  -> 돌아오는 인덱스의 규칙을 찾고, 그 군 내에서의 수열을 적용

- 다음 수열을 보고 n번째 항의 값을 출력하는 프로그램을 만들어보자.

- 다음 수열을 보고 n번째 항의 값을 출력하는 프로그램을 만들어보자.

[순열]

- n개에서 r개를 택하여 나열하는 경우의 수

- nPr = n(n-1)(n-2)....(n-r+1)

- 파이썬을 이용해, n과 r값을 받아서 순열을 계산하는 프로그램 코딩

- 원순열 : 시작과 끝의 구분이 없는 순열

- 두 가지로 계산 할 수 있음 : n! / n or (n-1)!

 

[조합]

- n개에서 r개를 택하는 경우의 수

- nCr = n! / (r! * (n-r)!)

- 파이썬을 이용해, n과 r값을 받아서 조합을 계산하는 프로그램 코딩

[확률]

- 모든 사건에서 특정 사건이 일어날 수 있는 수

 


온라인 강의 5일차 후기

 

과제가 점점 많아지고 있다.

그렇지만 기초가 가장 중요한 것 같으니,, 시간을 잘 써보자.

친구야.. 잠 좀 줄일 수 있지?

 

 

- 네카라쿠배 데이터사이언스 오프라인 1기 수강 中

https://zero-base.co.kr/

 

제로베이스 - 밑바닥부터 끝까지 듣는 온라인 강의

무조건 간다! 개발자 스쿨 '네카라쿠배', 끝까지 공부하는 '온라인 완주반', 전문가가 베스트셀러를 해석해 주는 '한달한권' 등 교육 서비스로 삶의 전환점을 제공하는 제로베이스입니다.

zero-base.co.kr

 

반응형

댓글