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 제로베이스 데이터 분석 스쿨