기초수학

TaeHwi Kang·2022년 9월 14일
0

1. 약수와 소수

- 약수 : 어떤 수를 나누어떨어지게 하는 수

#파이썬을 이용하여 약수를 구하기
inputNum = int(input('숫자입력  :')) 

for number in range(1, inputNum + 1):
    
    if i % number == 0:
        print(f'{inputNum}의 {number}')

- 소수 : 1과 자신만을 약수로 가지는 수(1은 제외)

#파이썬을 이용하여 소수 구하기
inputNum = int(input('숫자입력  :'))

for number in range(2, inputNum + 1):

	flag = True
    	
    for n in (2, number):
        flag = False
        break
    
    if flag:
        print(f'{number} : 소수')
    else:
        print(f'{number} : 합성수')

2.소인수와 소인수분해

- 소인수 : 약수(인수)중에서 소수인 숫자

#파이썬을 이용하여 소인수 구하기
inputNum = int(input('숫자입력  :'))

n = 2
while n <= inputNum:
    
    if i % n == 0:
        print(f'소인수 : {n}')
        inputNum /= n
    else:
        n += 1

- 소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것

3. 최대공약수

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

#파이썬을 이용하여 공약수 구하기
n1 = int(input('숫자1 입력  :'))
n2 = int(input('숫자2 입력  :'))

for i in range(1, n1 + 1):
    
    if n1 % i == 0 and n2 % i == 0:
        print(f'공약수 : {i}')

- 최대공약수 : 공약수 중 가장 큰 수

#파이썬을 이용하여 최대공약수(maxNum) 구하기
n1 = int(input('숫자1 입력  :'))
n2 = int(input('숫자2 입력  :'))
maxNum = 0

for i in range(1, n1 + 1):

	if n1 % i == 0 and n2 % i == 0:
        print(f'공약수 : {i}')
        maxNum = i
        
print(f'최대공약수 : {i}')
#유클리드 호제법을 이용하여 공약수 구하기
n1 = int(input('숫자1 입력  :'))
n2 = int(input('숫자2 입력  :'))

temp1 = n1; temp2 = n2

while temp2 > 0:
    temp = temp2
    temp2 = temp1 % temp2
    temp1 = temp

print(f'{n1},{n2}의 최대공약수 {temp1}')

for n in range(1,temp1+1):
    if temp1 % n == 0:
        print(f'{n1},{n2}의 공약수 {n}')

4. 최소공배수

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

- 최소공배수 : 공배수 중 가장 작은 수

#최소공배수(minNum)는 최대공약수(maxNum)를 이용하여 구할수있음
minNum = (n1*n2) / maxNum
print(f'{n1},{n2}의 최소공배수 {minNum}')

5. 진법

- 진법 : 특정 숫자 몇 개를 사용하여 수를 표시하는 방법 ex) 2진법,10진법

#파이썬을 이용해 10진수를 x진수으로 변환하는 방법

10진수 -> 2진수
print('2진수 : {}'.format(bin(dNum)))
print('2진수 : {}'.format(format(dNum, '#b')))

10진수 -> 8진수
print('8진수 : {}'.format(oct(dNum)))
print('8진수 : {}'.format(format(dNum, '#o')))

10진수 -> 16진수
print('16진수 : {}'.format(hex(dNum)))
print('16진수 : {}'.format(format(dNum, '#x')))

x진수에서 10진수로 변환하는 방법
print('2진수(ob11110) -> 10진수{}'.format( int('ob11110',2)))
print('8진수(0o36) -> 10진수{}'.format( int('0o36',8)))
print('16진수(0x1e) -> 10진수{}'.format( int('0x1e',16)))

6.수열

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

1) 등차수열 : 연속된 두 항의 차이가 일정한 수열

(1) 등차 수열 규칙성을 이용해서 일반항을 구할 수 있다.
일반항 : an = a1+(n-1)*d
등차중항 : an = (a(n-1) + a(n+1)) / 2
등차수열의 합 : Sn = n(a1 + an) / 2

#파이썬을 이용하여 등차수열 an구하기
inputN1 = int(input('a1 입력  :'))
inputN = int(input('n 입력  :'))
inputD = int(input('공차 입력  :'))
valueN = 0

n = 1
while n <= inputN:
    if n == 1:
        valueN = inputN1
        n += 1
        continue

    valueN += inputD
    n += 1

print(f'{inputN}번쨰 항의 값 : {valueN}')

2) 등비수열 : 연속된 두 항의 비가 일정한 수열

(1) 등비 수열 규칙성을 이용해서 일반항을 구할 수 있다.
일반항 : an = a1r^(n-1)
등차중항 : an^2 = a(n-1)
a(n+1)
등차수열의 합 : Sn = a1 * (1-(r^n))/(1-r)

#파이썬을 이용하여 등비수열 an구하기
inputN1 = int(input('a1 입력  :'))
inputN = int(input('n 입력  :'))
inputR = int(input('공차비 입력  :'))
valueN = 0

n = 1
while n <= inputN:
    if n == 1:
        valueN = inputN1
        n += 1
        continue

    valueN *= inputR
    n += 1

print(f'{inputN}번쨰 항의 값 : {valueN}')

7. 시그마(∑)

- 수열의 합을 나타내는 기호

8. 계차수열

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

#파이썬을 이용하여 계차수열을 가지는 an 구하기
inputA1 = int(input('a1 입력  :'))
inputAn = int(input('an 입력  :'))
inputB1 = int(input('b1 입력  :'))
inputBn = int(input('bn공차 입력  :'))

valueAn = 0
valueBn = 0

n=1
while n <=0:
    if n == 0:
        valueAn = inputA1
        valueBn = inputB1
        n += 1
        continue

    valueAn = valueAn + valueBn
    valueBn = valueBn + inputBn
    n += 1
    
print(f'{inputAn}항의 값은 : {valueAn}')

9. 피보나치 수열

- 세 번째 항은 두 번째 항과 첫 번째 항을 더한 합을 가지는 수열

# 파이썬을 이용하여 피보나치수열 n번째항의 값과 합 구하기
num = int(input('n 입력  :'))

sumN = 0; valueN = 0
valuePreN1 = 0
valuePreN2 = 0

n = 1
while n <= num:
    if n == 1 and n == 2:
        valueN = 1
        valuePreN1 = valueN
        valuePreN2 = valueN
        n += 1
        sumN += valueN
    else:
        valueN = valuePreN1+ valuePreN2
        valuePreN2 = valuePreN1
        valuePreN1 = valueN
        sumN += valueN
        n +=1
print(f'{num}항의 값은 : {valueN}')
print(f'{num}항 까지의 값은 : {sumN}')

10. 팩토리얼

- 1부터 양의 정수 n까지의 정수를 모두 곱한 것

#파이썬을 이용하여 팩토리얼 구하기
반복문 
n = 10 # 원하는 숫자 n!
result = 1
for n in range(1, n +1):
	result *= n
    
재귀함수
def factorial(n):
	if n == 1:
		return 1
    return n * actorial(n-1)
 
모듈
import math
math.factorial(factorial(n))

11. 군수열

- 여러 개의 항을 묶었을 때 규칙성을 가지는 수열

12. 순열

- n개에서 r개를 택하여 순서대로 나열하는 경우의 수

- 순열은 팩토리얼을 이용하여 나타낼수 있다

nPr = n!/(n-r)!

# 파이썬을 이용하여 순열구하기
numN = 8
numR = 3
result = 1

for n in range(numN , numN-numR , -1):
    result *= n
  • 원순열 : 시작과 끝이 구분이 없는 순열
  • (n-1)!
# 파이썬을 이용하여 원순열구하기
n = 10 # 총n개
result = 1
for n in range(1, n):
    result *= n

13. 조합

- n개에서 r개를 순서없이 택하는 경우의 수

- 조합은 순열을 이용하여 나타낼수 있다

nCr = nPr/r! = n!/(r!*(n-r)!)

#파이썬을 이용하여 조합구하기
numN = 8
numR = 3

resultP = 1
resultR = 1
resultC = 1

for n in range(numN , numN-numR , -1):
    resultP *= n

for n in range(1, numR+1):
    resultR *= n

resultC = resultP/resultR
print(f'조합은 : {resultC}')

14. 확률

- 모든 사건에서 특정 사건이 일어날 수 있는 수를 나타낸 것

- 조합을 이용해서 확률을 알아낼 수 있다

#박스에 ‘꽝’이 적힌 종이가 4장 있고, ‘선물’이 적힌 종이가 3장이 있을 때,
#파이썬을 이용해서 ‘꽝’2장과 ‘선물’ 1장을 뽑는 확률(%)구하기

def proFun(): # 함수 이용하기(조합구하는 함수)
    numN = int(input('숫자입력 : '))
    numR = int(input('숫자입력 : '))

    resultP = 1
    resultR = 1
    resultC = 1
    
    for n in range(numN, numN-numR, -1):
        resultP *= n
    
    for n in range(numR, 0, -1):
        resultR *= n
    
    resultC = resultP/resultR

    return resultC

sample = proFun()
print(f'{sample}')

event1 = proFun()
print(f'{event1}')

event2 = proFun()
print(f'{event2}')

probabilty = (event1*event2) / sample
print(f'{round(probabilty*100, 2)}')
profile
스터디 노트

0개의 댓글