Day07_기초수학_1‐4 핵심 - bonniekwon0721/Dataanalytics-study GitHub Wiki

15/Feb/2024


약수

  • 정의: 어떤 수를 나누어 떨어지게 하는 수입니다.
  • 공식: 없음. 특정 수 **N**에 대해 **1**부터 **N**까지 순회하며 **N**을 나누어 떨어뜨릴 수 있는 수를 찾습니다.
inputnumber = int(input('0보다 큰 정수 입력: '))

for number in range(1, inputnumber + 1):
    if inputnumber % number == 0:
        print('{}의 약수: {}'.format(inputnumber, number))

소수

  • 정의: **1**과 자기 자신만을 약수로 가지는 **1**보다 큰 자연수입니다.
  • 공식: 특정 수 **N**에 대해 **2**부터 **N-1**까지 순회하며 **N**을 나누어 떨어뜨릴 수 있는 수가 없으면 소수입니다.
inputnumber = int(input('0보다 큰 정수 입력: '))

for number in range(2, inputnumber + 1):
    flag = True
    
    for n in range(2, number):
        if number % n == 0:
            flag = False
            break
        
    if flag:
        print('{} : 소수!!'.format(number))
    else:
        print('{} : \t\t 합성수!!'.format(number))

소인수분해

  • 정의: 어떤 수를 소수의 곱으로 나타내는 것입니다.
  • 공식: 없음. **2**부터 시작하여 나누어 떨어지는 소수를 찾고, 나누어 떨어질 때마다 해당 소수로 나눕니다.
inputnumber = (int(input('1보다 큰 정수 입력: ')))

n = 2
while n <=inputnumber:
    if inputnumber % n == 0:
        print('소인수: {}'.format(n))
        inputnumber /= n
    else:
        n += 1

최대공약수 (GCD)

  • 정의: 두 수나 그 이상의 수들이 공통으로 가지는 가장 큰 약수입니다.
  • 공식: 유클리드 호제법. 두 수 a, **b**에 대해 **gcd(a, b) = gcd(b, a % b)**이며, **b**가 **0**일 때 **a**가 최대공약수입니다.

num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))

temp1 = num1
temp2 = num2

while temp2 > 0:
    temp = temp2
    temp2 = temp1 % temp2
    temp1 = temp
    
print('{}, {}의 최대공약수: {}'.format(num1, num2, temp1))

최소공배수 (LCM)

  • 정의: 두 수나 그 이상의 수들이 공통으로 가지는 가장 작은 배수입니다.
  • 공식: 두 수 **a**와 **b**의 최소공배수는 **(a * b) / gcd(a, b)**입니다.

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return a * b // gcd(a, b)

# 사용자로부터 세 개의 정수 입력받기
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
num3 = int(input('1보다 큰 정수 입력: '))

# num1과 num2의 최소공배수 계산
lcm1 = lcm(num1, num2)

# lcm1과 num3의 최소공배수 계산
final_lcm = lcm(lcm1, num3)

print(f'{num1}, {num2}, {num3}의 최소공배수: {final_lcm}')

진법 변환

  • 정의: 숫자를 다른 진법으로 표현하는 것입니다.
  • 공식: int() 함수로 진법 변환을 할 수 있으며, format() 함수나 진법 변환 내장 함수(bin(), oct(), hex())로 출력 포맷을 변경할 수 있습니다.

dNum = 30  # 10진수
print(f'2진수: {bin(dNum)}')
print(f'8진수: {oct(dNum)}')
print(f'16진수: {hex(dNum)}')

# 2진수, 8진수, 16진수를 10진수로 변환
bNum = '11110'  # 2진수
oNum = '36'     # 8진수
xNum = '1e'     # 16진수
print(f'2진수 {bNum} -> 10진수: {int(bNum, 2)}')
print(f'8진수 {oNum} -> 10진수: {int(oNum, 8)}')
print(f'16진수 {xNum} -> 10진수: {int(xNum, 16)}')


Studied from 제로베이스 데이터 분석 스쿨