데이터 취업 스쿨 스터디 노트 -(10) 기초수학

테리·2024년 6월 14일

약수

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

소수

나누어 떨어지는 수가 1과 본인 자신인 수. 단 1은 제외.

소인수

약수중에서 소수인 숫자.
10의 소인수는 2,5

소인수분해

1보다 큰 정수를 소인수의 곱으로 나타낸 것.

소인수 구하는 코드

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

n=2
while n<= inputNumber:
    if inputNumber % n == 0:
        print('소인수: {}'.format(n))
        inputNumber /= n  #2로 한번 나눈 것을 다시 2부터 나눠지는지 확인
    else:
        n += 1

72에 x를 곱하면 y의 제곱이 된다고 할때, x에 해당하는 가장 작은 정수 구하기★★

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

n=2
#리스트를 이용해 소인수들을 넣은뒤 홀수의 개수가 나온 애들을 찾아내면 된다.
searchNumbers = []

while n<= inputNumber:
    if inputNumber % n == 0:
        print('소인수: {}'.format(n))
        if searchNumbers.count(n) ==0: #n이 해당 리스트에 몇개가 있는지 알려줌
            searchNumbers.append(n)
        elif searchNumbers.count(n) == 1:
            # 우리는 홀수개가 있는 녀석을 찾는 것이므로 하나가 이미 있는 상태에서
            # 하나가 또 들어오면 짝수라는 뜻이므로 지워서 아예 없애버린다.
            searchNumbers.remove(n)
        inputNumber /= n
    else:
        n += 1
print('곱해야 할 수: {}'.format(searchNumbers))

공약수

두개이상의 수에서 공통된 약수

최대공약수

공약수 중 가장 큰 수

유클리드 호제법

x와 y의 최대공약수는 y와 r(x를 y로 나눈 나머지)의 최대공약수와 같다.

공배수

두개 이상의 수에서 공통된 배수

최소공배수

공배수 중 가장 작은 수

최소공배수

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

for i in range(1,(num+1)):
    if num1 % i ==0 and num2 % i ==0:
        print('공약수: {}'.format(i))
        maxNum = i
print('최대공약수: {}'.format(maxNum))

#최소공배수
minNum = (num1 * num2) // maxNum
print(f'최소공배수: {minNum}')

진법

10진수를 X진수로 변환

2진수(binary): bin(숫자) or format(숫자,'#b')
8진수(octal): oct(숫자) or format(숫자,'#o')
16진수(Hexadecimal): hex(숫자) or format(숫자,'#x')

ex) 모두 문자열로 결과가 나옴
2진수 결과: 0b1110
8진수 결과: 0o36
16진수 결과: 0x1e

이런 방법도 있음

dnum = 30
print('{0:#b}, {0:#o}, {0:#x}'.format(dnum, dnum, dnum))

X진수를 10진수로 변환

수열

규칙성을 가지고 나열되어 있는 수들

등차수열

an = a1+(n-1)d

등차중앙

연속된 세 항에서 가운데 항

등차수열의 합

Sn = n(a1+an)/2

#등차수열
inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))

valueN = inputN1 + (inputN-1)*inputD
print('{}번째 항의 값: {}'.format(inputN,valueN))

등비수열

an = a1*r^(n-1)

등비중앙

연속된 세 항에서 가운데 항

등비수열의 합

시그마

계차 수열

어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열

계차 수열을 이용해서 수열 an의 일반항을 구할 수 있다.

피보나치 수열

세번째 항은 두번째 항과 첫번째 항을 더한 합니다.

팩토리얼

1부터 양의 정수 n까지의 정수를 모두 곱한 것
0! = 1 이라고 규정한다.
ex) 4! = 1 x 2 x 3 x 4

기본 제공함수도 있음

import math
math.factorial(숫자)

군수열

순열

n개 중에서 r개를 택하여 나열하는 경우의 수
{1, 2, 3, 4}가 있다고 했을 때
1 -> 2, 3, 4 ex)(1, 2), (1, 3), (1, 4)
2 -> 1, 3, 4
3 -> 1, 2, 4
4 -> 1, 2, 3

원 순열

시작과 끝의 구분이 없는 순열
테이블에 앉는 방법 생각하면됨.
1, 2, 3 이나 2, 3, 1이나 하나의 테이블에서는 똑같음.

for i in range(1, n)
	result *= i

조합

n개에서 r개를 택하는 경우의 수
순열: 순서 상관있이 r개 선택
조합: 순서 상관없이 r개 선택

ex) 1, 2, 3개에서 2개 선택
순열: 6개
조합: 3개

확률

모든 사건에서 특정 사건이 일어날 수 있는 수

0개의 댓글