| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 머신러닝
- Machine Learning
- 자료구조
- 리스트
- numpy
- DataFrame
- pandas 메소드
- Slicing
- 문제풀이
- matplotlib
- tree.fit
- python
- INSERT
- MacOS
- Folium
- SQL
- 파이썬
- 재귀함수
- plt
- 순열
- pandas filter
- 등비수열
- 통계학
- 조합
- maplotlib
- barh
- 스터디노트
- 기계학습
- 등차수열
- pandas
Archives
- Today
- Total
코딩하는 타코야끼
[스터디 노트] Week2_5일차 [unit1 ~ 14] - 기초수학 본문
728x90
반응형
1. 기초수학_1~2 [unit 1 ~ 9]
📍 약수
- 어떤 수를 나누어떨어지게 하는 수
# 파이썬을 이용해서 사용자가 입력한 숫자의 약수를 출력해보자.
num = int(input("0보다 큰 정수 입력: "))
for i in range(1, num+1):
if num % i == 0:
print(f"{num}의 약수: {i}")
>>>
0보다 큰 정수 입력: 30
30의 약수: 1
30의 약수: 2
30의 약수: 3
30의 약수: 5
30의 약수: 6
30의 약수: 10
30의 약수: 15
30의 약수: 30
📍 소수
- 1과 자신만을 약수로 가지는 수(단, 1은 제외)
# 파이썬을 이용해서 사용자가 입력한 숫자까지의 소수를 출력해보자.
u_num = int(input("0보다 큰 정수 입력: "))
prime = []
for prime_num in range(2, u_num+1):
is_prime = True
for num in range(2, int(prime_num ** 0.5) + 1):
if prime_num % num == 0:
is_prime = False
break
if is_prime:
prime.append(prime_num)
print(prime)
>>>
0보다 큰 정수 입력: 50
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
📍 소인수
- 약수(인수) 중에서 소수인 숫자를 소인수라고 한다.
📍 소인수분해
- 1보다 큰 정수를 소인수의 곱으로 나타낸 것을 소인수분해라고 한다.
📍 소인수분해와 약수
- 소인수분해를 이용해서 약수를 정확하고 쉽게 구할 수 있다.
# 72에 x를 곱하면 y의 제곱이 된다고 할 때, x에 해당하는 가장 작은 정수를 구하자.
input_num = int(input("1보다 큰 정수 입력: "))
n = 2
l = [ ]
while n <= input_num:
if input_num % n == 0:
print(f"소인수: {n}")
if l.count(n) == 0:
l.append(n)
elif l.count(n) == 1:
l.remove(n)
input_num /= n
else:
n += 1
print(f"찾는 숫자: {l}")
>>>
1보다 큰 정수 입력: 72
소인수: 2
소인수: 2
소인수: 2
소인수: 3
소인수: 3
📍 공약수
- 두 개 이상의 수에서 공통된 약수를 공약수라고 한다.
📍최대공약수
- 공약수 중 가장 큰 수를 최대공약수라고 한다.
- 소인수분해를 이용하면 최대공약수 및 공약수를 구할 수 있다.
- 소수로 나눗셈을 하면 좀 더 편리하게 최대공약수를 구할 수 있다.
# 두 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성하자.
num1 = int(input("숫자1 입력: "))
num2 = int(input("숫자2 입력: "))
max_num = 0
for i in range(1, num1+1):
if num1 % i == 0 and num2 % i == 0:
max_num = i
print(f"최대공약수는: {max_num}")
>>>
숫자1 입력: 6
숫자2 입력: 5
최대공약수는: 1
⚡️ 유클리드 호제법
- 유클리드 호제법을 이용해서 최대공약수를 구할 수 있다
- x, y의 최대공약수는 y, r(x%y) 의 최대공약수와 같다.
num1 = int(input("숫자1 입력: "))
num2 = int(input("숫자2 입력: "))
temp1 = num1; temp2 = num2
while temp2 > 0:
temp = temp2
temp2 = temp1 % temp2
temp1 = temp
print(f"{num1}, {num2}의 최대공약수: {temp1}")
>>>
숫자1 입력: 12
숫자2 입력: 36
12, 36의 최대공약수: 12
📍 공배수
- 두 개 이상의 수에서 공통된 배수를 공배수라고 한다.
📍 최소공배수
- 공배수 중 가장 작은 수를 최소공배수라고 한다.
- 소인수분해를 이용하면 최소공배수 및 공배수를 구할 수 있다.
- 소수로 나눗셈을 하면 좀 더 편리하게 최소공배수를 구할 수 있다.
- 두 숫자를 곱한 값에 최대공약수를 나눈 몫이 최소공배수 이다.
# 두 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자.
num1 = int(input("숫자1 입력: "))
num2 = int(input("숫자2 입력: "))
max_num = 0
for i in range(1, num1 + 1):
if num1 % i == 0 and num2 % i == 0:
max_num = i
min_num = (num1 * num2) // max_num
print(f"최소공배수: {min_num}")
>>>
숫자1 입력: 10
숫자2 입력: 12
최소공배수: 60
2. 기초수학_3 [unit 10 ~ 13]
📍 진법
- 진법이란, 특정 숫자 몇 개를 사용하여 수를 표시하는 방법이다.

📍 진법 변환 함수
- bin( ) - 2진수 변환
- oct( ) - 8진수 변환
- int( ) - 10진수 변환
- hex( ) - 16진수 변환
📎 변환 결과는 문자열이다
num = 10
print(f"type of bin(num): {type(bin(num))}")
print(f"type of bin(num): {type(oct(num))}")
print(f"type of bin(num): {type(hex(num))}")
>>>
type of bin(num): <class 'str'>
type of bin(num): <class 'str'>
type of bin(num): <class 'str'>
📎 2진수, 8진수, 16진수(format()함수 이용)
print("2진수: {}".format(format(num, "#b")))
print("8진수: {}".format(format(num, "#o")))
print("10진수: {}".format(format(num, "#x")))
>>>
2진수: 0b1010
8진수: 0o12
10진수: 0xa
📎 x진수 -> 10진수
print("2진수(0b11110) -> 10진수({})".format(int('0b11110', 2)))
print("2진수(0b11110) -> 10진수({})".format(int(0b11110))) # 이 방법을 더 선호함.
>>>
2진수(0b11110) -> 10진수(30)
2진수(0b11110) -> 10진수(30)
📍 수열
- 규칙성을 가지고 나열되어 있는 수들
📍 항들의 합과 항의 관계
- 특정항은 특정항까지의 합에서 특정항 이전의 항까지의 합과 같다.
📍 등차 수열
- 연속된 두 항의 차이가 일정한 수열
- 수열에서 각 항은 그 이전 항에 일정한 차이(공차)를 더함으로써 얻어집니다.
- 예를 들어, 2, 4, 6, 8, 10은 공차가 2인 등차수열입니다.
- 이 경우 n번째 항은 첫 번째 항에 (n-1) * 2 공차를 더한 값으로 구할 수 있습니다.

# 다음 수열을 보고 n번째 항의 값을 출력하는 프로그램을 만들어보자.
# an = {2, 5, 8, 11, 14, 17, 20, 23, 26, 29, ... }
num1 = int(input("a1입력: "))
dis = int(input("공차 입력: "))
num2 = int(input("n입력: "))
value_n = 0
n = 1
while n <= num2:
if n == 1:
value_n = num1
n += 1
continue
value_n += dis
n += 1
print(f"{num2}번째 항의 값: {value_n}")
>>>
a1입력: 2
공차 입력: 3
n입력: 7
7번째 항의 값: 20
# # a(n) = a(1) + (n-1) * d
num1 = int(input("a1입력: "))
dis = int(input("공차 입력: "))
num2 = int(input("n입력: "))
result = num1 + (num2 - 1) * dis
print(result)
>>>
a1입력: 2
공차 입력: 3
n입력: 7
20
📍 등차 중항
- 연속된 세 항에서 가운데 항

📍 등차 수열의 합
- 규칙성을 이용해서 모든 항들의 총합을 구할 수 있다.

# 다음 수열을 보고 n번째 항까지의 합을 출력하는 프로그램을 만들어보자.
num1 = int(input("a1입력: "))
dis = int(input("공차 입력: "))
num2 = int(input("n입력: "))
value_n = 0
sum_n = 0
n = 1
while n <= num2:
if n == 1:
value_n = num1
sum_n = value_n
n += 1
continue
value_n += dis
sum_n += value_n
n += 1
print(f"{num2}번째 항의 값: {value_n}")
print(f"{num2}번째 까지 항 값의 합: {sum_n}")
>>>
a1입력: 5
공차 입력: 4
n입력: 7
7번째 항의 값: 29
7번째 까지 항 값의 합: 119
# n( a(1) + a(n) ) / 2
# a(n) = a(1) + (n-1) * d
num1 = int(input("a1입력: "))
dis = int(input("공차 입력: "))
num2 = int(input("n입력: "))
result = (num1 * 2 + (num2 - 1) * dis) * num2 / 2
print(int(result))
>>>
a1입력: 5
공차 입력: 4
n입력: 7
119
반응형
'zero-base 데이터 취업 스쿨 > 스터디 노트' 카테고리의 다른 글
| [스터디 노트] Week3_2일차 [unit31 ~ 45] - 기초수학 문제풀이 (0) | 2023.07.19 |
|---|---|
| [스터디 노트] Week3_1일차 [unit15 ~ 30] - 기초수학 (0) | 2023.07.19 |
| [스터디 노트] Week2_4일차 [unit53 ~ 65] (0) | 2023.07.15 |
| [스터디 노트] Week2_3일차 [unit_40 ~ 52] (0) | 2023.07.15 |
| [스터디 노트] Week2_2일차[unit20 ~ 39] (0) | 2023.07.14 |