라이브러리 없이 표현하는 수학 개념 20개

파이썬 기초 문법으로 배우는 수학 + 코드 주석 + 한 줄씩 상세 설명 + 퀴즈

학습 목표

이 수업자료는 라이브러리 없이 파이썬 기본 문법만으로 수학 개념을 표현하는 방법을 익히는 자료입니다.
사용 문법: 변수, if, for, while, list, %, //, **, print()

1. 수학 개념 20개와 파이썬 코드

1. 짝수 판별

어떤 수를 2로 나누었을 때 나머지가 0이면 짝수입니다.

n = 12  # 판별할 수를 저장한다.

if n % 2 == 0:  # n을 2로 나눈 나머지가 0인지 확인한다.
    print("짝수")  # 조건이 참이면 짝수라고 출력한다.
else:
    print("홀수")  # 조건이 거짓이면 홀수라고 출력한다.
한 줄씩 설명
n = 12: 변수 n에 12를 저장합니다.
n % 2: n을 2로 나눈 나머지를 구합니다.
③ 나머지가 0이면 짝수입니다.
④ 그렇지 않으면 홀수입니다.

2. 홀수 판별

어떤 수를 2로 나누었을 때 나머지가 1이면 홀수입니다.

n = 15  # 판별할 수를 저장한다.

if n % 2 == 1:  # n을 2로 나눈 나머지가 1인지 확인한다.
    print("홀수")  # 참이면 홀수라고 출력한다.
else:
    print("짝수")  # 거짓이면 짝수라고 출력한다.
n = 15: 15를 변수에 저장합니다.
%는 나머지를 구하는 연산자입니다.
③ 15 % 2는 1이므로 홀수입니다.

3. 약수 구하기

어떤 수를 나누어떨어지게 하는 수를 약수라고 합니다.

n = 24  # 약수를 구할 수

for i in range(1, n + 1):  # 1부터 n까지 반복한다.
    if n % i == 0:  # n이 i로 나누어떨어지는지 확인한다.
        print(i)  # 나누어떨어지면 i는 약수이다.
range(1, n + 1): 1부터 n까지 검사합니다.
n % i == 0: 나머지가 0이면 나누어떨어집니다.
③ 나누어떨어지는 i를 출력합니다.

4. 배수 구하기

어떤 수에 정수를 곱해서 얻는 수를 배수라고 합니다.

n = 3  # 기준이 되는 수

for i in range(1, 11):  # 1부터 10까지 반복한다.
    print(n * i)  # n에 i를 곱해 배수를 출력한다.
n = 3: 3의 배수를 구합니다.
i가 1부터 10까지 변합니다.
n * i로 배수를 출력합니다.

5. 소수 판별

1과 자기 자신만을 약수로 가지는 2 이상의 자연수를 소수라고 합니다.

n = 29  # 소수인지 판별할 수
is_prime = True  # 처음에는 소수라고 가정한다.

if n < 2:  # 2보다 작은 수는 소수가 아니다.
    is_prime = False
else:
    for i in range(2, n):  # 2부터 n-1까지 나누어 본다.
        if n % i == 0:  # 나누어떨어지면 약수가 있는 것이다.
            is_prime = False  # 소수가 아니다.
            break  # 더 검사할 필요가 없으므로 반복 종료

print("소수" if is_prime else "소수 아님")
① 처음에는 소수라고 가정합니다.
② 2보다 작으면 소수가 아닙니다.
③ 2부터 n-1까지 나누어 약수가 있는지 확인합니다.
④ 약수가 발견되면 소수가 아닙니다.

6. 빠른 소수 판별

약수는 제곱근까지만 확인해도 충분합니다.

n = 97  # 판별할 수
is_prime = True  # 소수라고 가정한다.

if n < 2:
    is_prime = False
else:
    for i in range(2, int(n ** 0.5) + 1):  # 제곱근까지만 검사한다.
        if n % i == 0:
            is_prime = False
            break

print(is_prime)
n ** 0.5는 제곱근을 의미합니다.
② 약수가 있다면 제곱근 이하에도 하나는 존재합니다.
③ 그래서 전체를 검사하는 것보다 빠릅니다.

7. 소인수분해

자연수를 소수들의 곱으로 나타내는 것을 소인수분해라고 합니다.

n = 84  # 소인수분해할 수
i = 2  # 가장 작은 소수부터 시작한다.

while i <= n:  # i가 n보다 작거나 같은 동안 반복한다.
    if n % i == 0:  # n이 i로 나누어떨어지면
        print(i, end=" ")  # i는 소인수이다.
        n //= i  # n을 i로 나눈 몫으로 바꾼다.
    else:
        i += 1  # 나누어떨어지지 않으면 다음 수로 넘어간다.
① 2부터 나누기 시작합니다.
② 나누어떨어지면 그 수는 소인수입니다.
③ 나눈 뒤의 몫을 다시 계속 나눕니다.

8. 최대공약수

두 수의 공통 약수 중 가장 큰 수를 최대공약수라고 합니다.

a = 48  # 첫 번째 수
b = 18  # 두 번째 수

while b != 0:  # b가 0이 될 때까지 반복한다.
    a, b = b, a % b  # 유클리드 호제법을 적용한다.

print("최대공약수:", a)
① 유클리드 호제법을 사용합니다.
② 큰 수를 작은 수로 나눈 나머지를 계속 이용합니다.
③ 나머지가 0이 되면 남은 수가 최대공약수입니다.

9. 최소공배수

두 수의 공통 배수 중 가장 작은 수를 최소공배수라고 합니다.

a = 12
b = 18
x = a
y = b

while y != 0:  # 최대공약수를 먼저 구한다.
    x, y = y, x % y

gcd = x  # 최대공약수
lcm = a * b // gcd  # 최소공배수 공식

print("최소공배수:", lcm)
① 최소공배수는 두 수의 곱을 최대공약수로 나누어 구합니다.
//는 몫을 구하는 정수 나눗셈입니다.

10. 절댓값

절댓값은 수직선에서 0으로부터의 거리입니다.

n = -15  # 절댓값을 구할 수

if n < 0:  # 음수이면
    print(-n)  # 부호를 바꾸어 출력한다.
else:
    print(n)  # 양수이면 그대로 출력한다.
① 음수의 절댓값은 부호를 바꾸면 됩니다.
② 양수와 0은 그대로입니다.

11. 제곱과 세제곱

같은 수를 두 번 곱하면 제곱, 세 번 곱하면 세제곱입니다.

n = 4  # 기준 수

square = n ** 2  # n의 제곱
cube = n ** 3  # n의 세제곱

print("제곱:", square)
print("세제곱:", cube)
**는 거듭제곱 연산자입니다.
n ** 2는 n의 제곱입니다.
n ** 3는 n의 세제곱입니다.

12. 제곱수 판별

어떤 정수의 제곱으로 표현되는 수를 제곱수라고 합니다.

n = 49
is_square = False

for i in range(1, n + 1):  # 1부터 n까지 검사한다.
    if i * i == n:  # i의 제곱이 n과 같으면
        is_square = True  # 제곱수이다.
        break

print("제곱수" if is_square else "제곱수 아님")
① 1², 2², 3² ...을 차례대로 검사합니다.
② 어떤 i에 대해 i × i = n이면 제곱수입니다.

13. 등차수열

연속한 항의 차가 일정한 수열입니다.

a = 3  # 첫째항
d = 2  # 공차

for n in range(1, 11):  # 1번째 항부터 10번째 항까지
    term = a + (n - 1) * d  # 등차수열 일반항
    print(term)
① 첫째항은 a입니다.
② 공차는 d입니다.
③ n번째 항은 a + (n - 1) * d입니다.

14. 등비수열

연속한 항의 비가 일정한 수열입니다.

a = 2  # 첫째항
r = 3  # 공비

for n in range(1, 8):  # 1번째 항부터 7번째 항까지
    term = a * (r ** (n - 1))  # 등비수열 일반항
    print(term)
① 첫째항은 a입니다.
② 공비는 r입니다.
③ n번째 항은 a * r^(n-1)입니다.

15. 팩토리얼

1부터 n까지의 모든 자연수를 곱한 값을 팩토리얼이라고 합니다.

n = 5
result = 1

for i in range(1, n + 1):  # 1부터 n까지 반복한다.
    result *= i  # result에 i를 곱한다.

print(result)
① 5! = 1 × 2 × 3 × 4 × 5입니다.
result *= iresult = result * i와 같습니다.

16. 피보나치 수열

앞의 두 수를 더해 다음 수를 만드는 수열입니다.

a = 1
b = 1

for _ in range(10):  # 10개의 항을 출력한다.
    print(a)  # 현재 항 출력
    a, b = b, a + b  # 다음 항으로 이동
① 처음 두 항을 1, 1로 둡니다.
② 다음 항은 앞의 두 항의 합입니다.
a, b = b, a + b로 값을 동시에 갱신합니다.

17. 평균

자료의 총합을 자료의 개수로 나눈 값입니다.

scores = [80, 90, 70, 100]
total = 0

for s in scores:  # 점수를 하나씩 꺼낸다.
    total += s  # 총합에 더한다.

average = total / len(scores)  # 총합을 개수로 나눈다.

print(average)
① 리스트에 점수들을 저장합니다.
② 반복문으로 총합을 구합니다.
③ 총합을 자료 개수로 나누면 평균입니다.

18. 일차함수

일차함수는 y = ax + b 형태의 함수입니다.

a = 2  # 기울기
b = 3  # y절편

for x in range(-3, 4):  # x값을 -3부터 3까지 바꾼다.
    y = a * x + b  # 일차함수 식
    print(x, y)
a는 기울기입니다.
b는 y절편입니다.
③ x값을 넣으면 y값이 계산됩니다.

19. 두 점 사이 거리

좌표평면에서 두 점 사이의 거리는 피타고라스 정리로 구합니다.

x1, y1 = 1, 2
x2, y2 = 4, 6

dx = x2 - x1  # x좌표의 차
dy = y2 - y1  # y좌표의 차

distance = (dx ** 2 + dy ** 2) ** 0.5  # 거리 공식

print(distance)
① x좌표의 차와 y좌표의 차를 구합니다.
② 각각 제곱해서 더합니다.
③ 제곱근을 구하면 두 점 사이 거리입니다.

20. 삼각형 넓이

삼각형의 넓이는 밑변 × 높이 ÷ 2입니다.

base = 10  # 밑변
height = 6  # 높이

area = base * height / 2  # 삼각형 넓이 공식

print(area)
① 밑변과 높이를 정합니다.
② 밑변과 높이를 곱합니다.
③ 2로 나누면 삼각형의 넓이입니다.

2. OX 개념 퀴즈 10개

1. % 연산자는 나머지를 구하는 연산자이다.
정답: O
2. 어떤 수가 2로 나누어떨어지면 홀수이다.
정답: X
3. 소수는 1과 자기 자신만을 약수로 가지는 2 이상의 자연수이다.
정답: O
4. n ** 2는 n을 2로 나누는 연산이다.
정답: X
5. 최대공약수는 두 수의 공통 약수 중 가장 큰 수이다.
정답: O
6. 등차수열은 연속한 항의 비가 일정한 수열이다.
정답: X
7. 등비수열은 연속한 항의 비가 일정한 수열이다.
정답: O
8. 피보나치 수열은 앞의 두 수를 더해 다음 수를 만든다.
정답: O
9. 평균은 자료의 총합을 자료의 개수로 나누어 구한다.
정답: O
10. 삼각형의 넓이는 밑변 × 높이 × 2이다.
정답: X

3. 5지선다형 문제 10개

1. 짝수 판별에 가장 많이 사용되는 연산자는?
① + ② - ③ % ④ ** ⑤ and
정답: ③ %
2. 다음 중 소수인 것은?
① 1 ② 4 ③ 9 ④ 13 ⑤ 21
정답: ④ 13
3. n ** 3의 의미는?
① n 더하기 3 ② n 빼기 3 ③ n 곱하기 3 ④ n의 세제곱 ⑤ n 나누기 3
정답: ④ n의 세제곱
4. range(1, n + 1)의 의미로 알맞은 것은?
① 1부터 n까지 ② 0부터 n-1까지 ③ n부터 1까지 ④ 1부터 n-1까지 ⑤ 2부터 n까지
정답: ① 1부터 n까지
5. 최대공약수를 구하는 대표적인 알고리즘은?
① 이진 탐색 ② 유클리드 호제법 ③ 버블 정렬 ④ 선택 정렬 ⑤ 신발끈 공식
정답: ② 유클리드 호제법
6. 최소공배수 공식으로 알맞은 것은?
① a + b ② a - b ③ a × b ÷ 최대공약수 ④ 최대공약수 ÷ a ⑤ a² + b²
정답: ③ a × b ÷ 최대공약수
7. 등차수열의 n번째 항 공식은?
① a + (n - 1)d ② arⁿ ③ n! ④ a² + b² ⑤ ab / 2
정답: ① a + (n - 1)d
8. 팩토리얼 5!의 값은?
① 15 ② 20 ③ 60 ④ 100 ⑤ 120
정답: ⑤ 120
9. 두 점 사이 거리 공식과 관련 깊은 정리는?
① 피타고라스 정리 ② 근의 공식 ③ 나머지 정리 ④ 평균값 정리 ⑤ 드모르간 법칙
정답: ① 피타고라스 정리
10. 삼각형 넓이 공식으로 알맞은 것은?
① 밑변 + 높이 ② 밑변 × 높이 ③ 밑변 × 높이 ÷ 2 ④ 2 × 반지름 ⑤ 가로 × 세로
정답: ③ 밑변 × 높이 ÷ 2

4. 수업 정리

라이브러리를 사용하지 않아도 파이썬의 기본 문법만으로 많은 수학 개념을 구현할 수 있습니다.

핵심 문법: 변수, 조건문, 반복문, 리스트, 나머지 연산, 거듭제곱, 정수 나눗셈
핵심 수학: 약수, 배수, 소수, 소인수분해, 최대공약수, 최소공배수, 수열, 함수, 거리, 넓이