파이썬 - 기초 수학 (1)

subinii·2024년 3월 22일

DS 25기

목록 보기
7/46

약수와 소수

  • 약수 : 어떤 수를 나누어 떨어지게 하는 수
#사용자가 입력한 숫자의 약수 출력하기 => 나머지가 0인 숫자 찾기

*inputNum = int(input('0보다 큰 정수 입력: '))
for number in range(1, inputNum + 1):
    if inputNum % number == 0:
        print('{}의 약수: {}'.format(inputNum, number))
  • 소수 : 1과 자신 만을 약수로 가지는 수 (단, 1은 제외)
# 사용자가 입력한 숫자까지의 소수를 출력하기

inputNum = int(input('0보다 큰 정수 입력: '))
for number in range(2, (inputNum + 1)):
    flag = True
    for n in range(2, number):
        if number % n == 0:
            flag = False
            break    if flag:
        print('{}: 소수'.format(number))
    else:
        print('{}: 합성수'.format(number))

소인수분해

  • 소인수 : 약수(인수) 중에 소수인 숫자를 소인수 = 약수이면서 소수인 숫자
  • 소인수 분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것
  • 소인수분해와 약수 : 소인수분해를 이용해서 약수를 정확하고 쉽게 구할 수 있다.
# 사용자가 입력한 수를 소인수분해하기

inputNumber = int(input('1보다 큰 정수 입력: '))
n = 2while n <= inputNumber:
    if inputNumber % n == 0:
        print('소인수: {}'.format(n))
        inputNumber /= n
    else:
        n += 1

최대공약수와 최소공배수

  • 공약수 : 두 개 이상의 수엣 공통된 약수를 공약수라고 한다.
  • 최대공약수 : 공약수 중 가장 큰 수를 최대공약수라고 한다.
    ⇒ 소인수분해를 이용하면 최대공약수 및 공약수를 구할 수 있다. (소수로 나눗셈하기)
# 두 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드 작성하기

num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
maxNum = 0
for i in range(1, (num1 + 1)):
    if num1 % i == 0 and num2 % i ==0:
        print(f'공약수: {i}')
        maxNum = i
  • 유클리드 호제법 : x,y의 최대공약수는 y,r(x%y)의 최대공약수와 같다.
    ⇒ 나머지가 0일 때까지 나눗셈
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
temp1 = num1
temp2 = num1
while temp2 > 0:
    temp = temp2
    temp2 = temp1 % temp2
    temp1 = temp
print(f'{num1}, {num2}의 최대 공약수: {temp1}')
  • 공배수 : 두 개 이상의 수에서 공통된 배수
  • 최소공배수 : 공배수 중에 가장 작은 수
# 두 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자
# 최대공약수 먼저 구한 뒤 최소공배수 구하기

num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
maxNum = 0
for i in range(1, (num1 + 1)):
    if num1 % i == 0 and num2 % i == 0:
        print(f'공약수: {i}')
        maxNum = iprint(f'최대공약수: {maxNum}')
minNum = (num1 * num2) // maxNum
print(f'최소공배수: {minNum}')

진법

  • 진법 : 특정 숫자 몇 개를 사용하여 수를 표시하는 방법
    (문자열이기 때문에 문자열로 출력)
# 10진수를 x 진수로 변환
dNum = 30
print('2진수 : {}'.format(bin(dNum)))
print('8진수 : {}'.format(oct(dNum)))
print('16진수 : {}'.format(hex(dNum)))

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

profile
데이터 공부 기록

0개의 댓글