반응형
Chapter 01. 기초 수학
약수와 소수 (Divisors & Primes)
1. 약수 (Divisor)
- 정의:
어떤 수를 나누어떨어지게 하는 수 → 나머지가 0이 되는 수 - 예시:
8 ÷ 1 = 8
8 ÷ 2 = 4
8 ÷ 4 = 2
8 ÷ 8 = 1
따라서 8의 약수는 1, 2, 4, 8
- 특징:
- 모든 자연수는 1과 자기 자신을 약수로 가진다.
- 어떤 수의 약수의 개수를 세면 그 수가 짝수인지, 제곱수인지도 판별할 수 있다.
2. 소수 (Prime Number)
- 정의:
1과 자기 자신만을 약수로 가지는 수 (단, 1은 제외) - 예시:
2, 3, 5, 7, 11, 13, 17, 19 ...
- 특징:
- 2는 유일한 짝수 소수
- 다른 모든 짝수는 2로 나누어지므로 소수가 아님
- 소수는 수학뿐만 아니라 암호화, 보안, 해시 함수 등에서도 매우 중요한 역할을 한다.
3. 실습 — 소수 찾기
1부터 30까지의 숫자 중 소수를 찾는 법
- 2를 제외한 2의 배수 제거
- 3을 제외한 3의 배수 제거
- 5를 제외한 5의 배수 제거
- 7을 제외한 7의 배수 제거
→ 에라토스테네스의 체 알고리즘의 기본 원리
4. 실습 — 몫과 나머지가 모두 소수인 수
1부터 30까지의 수 중 5로 나눈 몫과 나머지가 모두 소수인 숫자 찾기
- (5 × 몫) + (5보다 작은 소수) 형태로 계산
- 수학적 사고력과 조건 필터링의 결합
5. 파이썬으로 구현하기
(1) 약수 구하기
num = int(input("숫자를 입력하세요: "))
for i in range(1, num + 1):
if num % i == 0:
print(i, end=' ')
➜ num % i == 0 조건을 통해 나누어떨어지는 수를 출력
(2) 소수 구하기
n = int(input("숫자를 입력하세요: "))
for i in range(2, n + 1):
is_prime = True
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i, end=' ')
➜ 나눗셈으로 약수가 없는 수를 판별하여 소수 출력
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
💡 생각 정리
이번 강의는 수학적 개념을 프로그래밍적으로 연결하는 좋은 예시였다.
특히 약수와 소수는 단순한 수학 개념을 넘어서, 패턴과 조건을 탐색하는 논리적 사고를 요구한다.
파이썬으로 약수나 소수를 구하는 과정을 직접 코딩하면서,
- 반복문(for)과 조건문(if)의 구조적 이해
- 나눗셈 연산자(%)의 활용
- 논리 플래그(is_prime)의 응용
을 자연스럽게 익힐 수 있었다.
수학 문제를 코드로 해결하는 과정이 단순 계산이 아니라, “논리적 사고를 구현하는 사고 실험”이라는 점이 가장 인상적이었다.
🚀 적용점
- 기초 알고리즘 연습:
약수와 소수 판별은 알고리즘 기초 문제로, 시간 복잡도 개선 연습에 적합하다.
(O(n²) → O(√n) 최적화 가능) - 실전 응용:
- 암호학(Cryptography) : 소수의 성질을 활용한 공개키 암호
- 데이터 분석 : 나머지 연산(%)을 이용한 그룹 필터링, 샘플링
- 코딩 테스트 : 조건 필터링 및 반복 구조 기본 문제로 자주 출제
- 확장 실습 아이디어:
- 사용자 입력 범위 내 모든 소수의 개수를 세는 함수 만들기
- 소수를 리스트로 반환해 다른 계산(예: 소수의 합, 차이 등)에 활용하기
- math.sqrt()를 활용해 효율적으로 소수를 판별하는 버전으로 개선
반응형
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-03 (0) | 2025.10.21 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-02 (0) | 2025.10.20 |
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-18 (0) | 2025.10.18 |
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-17 (0) | 2025.10.17 |
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-16 (0) | 2025.10.16 |