0421 기초수학 2일차(~14)

박영선·2023년 4월 21일
0

진법

진법 : 특정숫자 몇개를 사용하여 수를 표시하는 방법

10진수를 다른 진법으로 바꾸는 경우, 해당수를 진법 수로 바꿈
ex) 10진수 8 -> 16진수로 변환시, 8은 16으로 나누면 나머지 8이므로 8이 그대로,
25를 변환하면 몫은 1, 나머지 9이므로 19

X진수 -> 10진수 바꿀때는, 각 자릿수 마다 2의 제곱 x 해당 자릿수
ex)2진수 10001은 2의 0제곱 =1 / 2의 4제곱 = 16/1+16 =17
/8진수 21은 8의 0제곱 = 1 / 8의 1제곱 = 8 X 2 = 16 / 1 + 16 = 17

2진수 - > 8진수 변환
ex) 2진수 1010100 을 세자리씩 끊는다 / 001 - 010 - 100 /
각 세자리마다 2의 0제곱부터 2제곱까지 배치.
001은 2의 2제곱0 2의 1제곱0 2의 0제곱1 = 1
010은 2의 2제곱0 2의 1제곱1 2의 0제곱0 = 2
100은 2의 2제곱1 2의 1제곱0 2의 0제곱0 = 4
8진수 124

2진수 -> 16진수 변환
ex) 2진수 1010100을 네자리씩 끊는다 / 0101 - 0100
각 네자리마다 2의 0제곱부터 3제곱까지 배치
0101은 2의 3제곱0 2의 2제곱1 2의 1제곱0 2의 0제곱1 = 4+1 = 5
0100은 2의 3제곱0 2의 2제곱1 2의 1제곱0 2의 0제곱0 = 4
16진수 54

-Python 내 의 진법

2진수 = bin() / 8진수 = oct() / 16진수 = hex()

괄호안에 숫자를 넣으면 각 진법의 숫자로 반환
반환된 값은 숫자가 아닌 문자열 (class 'str')

반대로 X진수에서 10진수로 바꿀때는,

print('{} -> {}'.format('0b11110',int('0b11110',2)))

format(int()) 안에 X진수의 값과 X를 넣어주면 된다.

X진수 -> X진수는

print('{} -> {}'.format('0b11110',format(hex(0b11110))))

ex)2진법 0b11110을 16진법으로 바꾸려면 format뒤에 16진법을 나타내는 hex를 넣고 해당 숫자를 넣으면 된다.

수열

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

*{an}은 수열을 뜻함


이런식으로 표현 가능

수열의 합은 Sn으로 표현

등차수열

등차수열 : 연속된 두항의 차이가 일정한 수열
ex)2,4,6,8,10.... 공차는 2

일반항 공식 : an = a1 + (n-1) *d(공차)

등차중항 : 연속된 세 항 중 가운데 항
ex) 5,9,13,17,21,25,29,33,37 중 17,21,25 를 보면 21이 등차중항

17+25 = 42 = 21*2 / (17+25)/2 = 21 (등차중항)

등차수열 합

ex)1~10까지의 합(공차:1) / 10(1+10) / 2 = 55

등차수열 중 n번째 항 구하기

inputN1 = int(input('a1 입력: ')) #첫항의 값
inputD = int(input('공차 입력: '))
inputN= int(input('n 입력: '))  #몇번째 값을 알고싶은지

valueN = 0  #n번째 항의 값
n=1

while n <= inputN:
    if n == 1:
        valueN = inputN1
        print('{}번쨰 항의 값 : {}'.format(n,valueN))
        n +=1
        continue
    valueN += inputD
    print('{}번째 항의 값 : {}'.format(n,valueN))
    n+=1

print('{}번째 항의 값 : {}'.format(inputN,valueN))

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

등차수열 중 n번째 항까지의 합 구하기

inputN1 = int(input('a1 입력: ')) #첫항의 값
inputD = int(input('공차 입력: '))
inputN= int(input('n 입력: '))  #몇번째 값을 알고싶은지


valueN = 0
sumN = 0
n = 1

while n <= inputN:

    if n == 1:
        valueN = inputN1
        sumN += valueN
        print('{}번째 항까지의 합 : {}'.format(n,sumN))
        n +=1
        continue

    valueN += inputD
    sumN += valueN
    print('{}번째 항까지의 합 : {}'.format(n,sumN))
    n+=1
print('{}번째 항까지의 합 : {}'.format(inputN,sumN))

#간단히 하면

valueN = inputN1 + (inputN-1)*inputD
sumN = inputN*(inputN1+valueN)/2
print('{}번째 항까지의 합 : {}'.format(inputN,int(sumN)))
profile
데이터분석 공부 시작했습니다

0개의 댓글