제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지

제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.11]

김뚱입니다 2025. 4. 11. 22:16

[강의 요약]

[Part 02. 수학_Ch 01. 기초 수학] 강의 수강

01_약수와 소수부터 06_최대공약수(파이썬)까지 강의 수강하였음

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰                                          ] 26/100일 (26%)

드디어 수학 부분!

심플하게 정리해 봤다.

 

 

 

[약수와 소수]

▶ 약수란?

어떤 수를 나누어 떨어지게 하는 수

예를 들어 15의 약수는 1, 3, 5, 15 임

8의 약수는 1, 2, 4, 8

22의 약수는 1, 2, 11, 22

 

▶ 소수란?

1과 자기 자신만을 약수로 가지는 수

(★ 1은 소수가 아니다!)

예를 들어 2, 3, 5, 7, 11, 13, 17, 19 가 있다.

 

 

 

 

[약수와 소수_파이썬]

★ 파이썬에서는 for문if문을 활용하여 약수와 소수를 쉽게 판별할 수 있음

▶ 코드 : 파이썬으로 약수 출력

# 약수를 구하는 코드
num = int(input("숫자를 입력하세요: "))

for i in range(1, num + 1):
    if num % i == 0:
        print(i)

★ 출력 결과 ★

숫자를 입력하세요: 12
1
2
3
4
6
12

 

 

▶ 코드 : 파이썬으로 소수 출력

# 소수를 구하는 코드
num = int(input("숫자를 입력하세요: "))

for i in range(2, num + 1):
    is_prime = True
    for j in range(2, i):
        if i % j == 0:
            is_prime = False
            break
    if is_prime:
        print(i)

★ 출력 결과 ★

숫자를 입력하세요: 10
2
3
5
7

 

 

 

 

[소인수와 소인수분해]

▶ 소인수란?

약수 중에서 소수인 수를 소인수라고 함

 

예시를 통해 이해해 보자

20의 약수 : 1, 2, 4, 5, 10, 20 → 소인수: 2, 5

12의 약수 : 1, 2, 3, 4, 6, 12 → 소인수: 2, 3

25의 약수 : 1, 5, 25 → 소인수: 5

41의 약수 : 1, 41 → 소인수: 41

 

 

 

 

▶ 소인수분해란?

1보다 큰 정수를 소인수들의 곱으로 표현하는 것

 

예시를 통해 이해해 보자

20 = 2 × 2 × 5 = 2² × 5

12 = 2² × 3

36 = 2² × 3²

25 = 5²

41 = 41 (소수이므로 자기 자신이 소인수)

 

 

 

 

▶ 소인수분해로 약수 구하기

소인수분해 결과를 활용하면 모든 약수를 손쉽게 구할 수 있음

 

20의 소인수분해 예시를 통해 이해해보자

20 = 2² × 5

가능한 조합은 다음과 같다.

2⁰ × 5⁰ = 1

2¹ × 5⁰ = 2

2² × 5⁰ = 4

2⁰ × 5¹ = 5

2¹ × 5¹ = 10

2² × 5¹ = 20

→ 약수: 1, 2, 4, 5, 10, 20

 

 

 

 

[소인수와 소인수분해_파이썬]

파이썬에서 while 문과 나머지 연산을 이용해 간단하게 소인수분해 가능함

▶ 코드 : 파이썬으로 소인수분해 구현

# 소인수분해 코드
num = int(input("숫자를 입력하세요: "))
i = 2

while num != 1:
    if num % i == 0:
        print(i)
        num //= i
    else:
        i += 1

★ 출력 결과 ★

숫자를 입력하세요: 72
2
2
2
3
3

2³ × 3² = 72

 

 

▶ 제곱수를 만들기 위한 최소 곱 찾기

2 × x = 어떤 수의 제곱 (완전제곱수)

72 = 2³ × 3²

완전제곱수로 만들기 위해 짝수 지수로 보정해야 함

그러면?

2를 한 번 더 곱해줘야 2⁴ × 3² → 완전제곱수

따라서 x = 2

 

 

 

 

[최대공약수]

▶ 공약수란?

두 개 이상의 수에서 공통으로 가지는 약수

 

예시를 통해 이해해 보자

12의 약수 : 1, 2, 3, 4, 6, 12

20의 약수 : 1, 2, 4, 5, 10, 20

→ 공약수 : 1, 2, 4

 

 

 

 

▶ 최대공약수란?

공약수 중에서 가장 큰 수

 

예시를 통해 이해해 보자

12와 20의 공약수: 1, 2, 4

→ 최대공약수 : 4

 

 

▶ 최대공약수 구하는 방법

방법 1: 소인수분해 이용

공통된 소인수의 거듭제곱 중 작은 지수를 곱하면 된다.

 

예시를 통해 이해해보자

12 = 2² × 3

20 = 2² × 5

→ 공통 소인수 : 2 → 작은 지수는 2

→ 최대공약수 = 2² = 4

 

 

 

 

방법 2: 유클리드 호제법 (Euclidean Algorithm)

GCD(a, b) = GCD(b, a % b)

나머지가 0이 될 때까지 반복한다.

 

예시를 통해 이해해보자

 

  • GCD(36, 12)
    • 36 % 12 = 0 → 최대공약수는 12
  • GCD(60, 36)
    • 60 % 36 = 24
    • 36 % 24 = 12
    • 24 % 12 = 0 → 최대공약수는 12

 

 

 

 

 

[최대공약수_파이썬]

파이썬에서는 for문 또는 while문으로 손쉽게 구현 가능하다.

▶ 코드 : 파이썬으로 최대공약수 구하기

# 두 수의 최대공약수
a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))

gcd = 1
for i in range(1, min(a, b) + 1):
    if a % i == 0 and b % i == 0:
        gcd = i

print("최대공약수:", gcd)

★ 출력 결과 ★

첫 번째 숫자: 12
두 번째 숫자: 20
최대공약수: 4

 

 

▶ 코드 : 세 수의 최대공약수 구하기

# 세 수의 최대공약수
a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))
c = int(input("세 번째 숫자: "))

gcd = 1
for i in range(1, min(a, b, c) + 1):
    if a % i == 0 and b % i == 0 and c % i == 0:
        gcd = i

print("최대공약수:", gcd)

★ 출력 결과 ★

첫 번째 숫자: 12
두 번째 숫자: 54
세 번째 숫자: 72
최대공약수: 6

 


▶ 코드 : 유클리드 호제법 함수

# 유클리드 호제법 함수
def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

print("최대공약수:", gcd(60, 36))

★ 출력 결과 ★

최대공약수: 12

 

 

 

 

[나의 생각 정리]

  • 유클리드 호제법을 코드로 구현해보면서 수학적 사고가 알고리즘으로 연결된다는 점이 흥미로웠다.

 

 

 

[적용점]

  • 앞으로 숫자 간의 규칙이나 배분 문제를 만났을 때, 최대공약수를 활용해 문제를 구조적으로 접근할 수 있을 것 같다.
  • 유클리드 호제법은 코딩테스트 문제에서도 자주 등장하니, 함수화해서 익숙해지는 것이 좋을 것 같다.

 

 

 

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”