01 약수와 소수 ~ 20 계차수열(파이썬)
약수: 어떤 수를 나누어 떨어지게 하는 수
#python 약수 구하기: 나머지가 0인 수 찾기
inputNumber = int(input("0보다 큰 정수 입력"))
for number in range(1, (inputNumber + 1)):
if inputNumber % number == 0:
print('{}의 약수: {}'.format(inputNumber, number))
소수: 1과 그 수 자신만을 약수로 가지는 수
# python 소수 찾기
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('{}: 합성수'.format(number))
소인수: 약수(인수) 중에서 소수인 숫자
# 소인수분해
inputNumber = int(input("1보다 큰 정수 입력: "))
n = 2
while n <= inputNumber:
if inputNumber % n == 0:
print('소인수: {}'.format(n))
inputNumber /= n # inputNumber에 몫 재할당
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('공약수: {}'.format(i))
maxNum = i
print('최대공약수: {}'.format(maxNum))
: x, y의 최대공약수는 y, r(x%y)의 최대공약수와 같다.
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))
for n in range(1, (temp1+1)):
if temp1 % n == 0:
print('{}, {}의 공약수: {}'.format(num1, num2, n))
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('공약수: {}'.format(i))
maxNum = i
print('최대공약수: {}'.format(maxNum))
minNum = (num1 * num2) // maxNum #두 수의 곱 / 최대수약수 = 최소공배수
print('최소공배수: {}'.format(minNum))
bin()
oct()
hex()
print('{0:#b}, {0:#o}, {0:#x}'.format(num))
print('2진수: {}'.format(format(30, '#b')))
>>>
2진수: 0b11110
print('2진수: {}'.format(format(30, 'b')))
>>>
2진수: 11110
print('2진수(0b11110) -> 10진수({})'.format(int('0b11110', 2)))
print('8진수(0o36) -> 10진수({})'.format(int('0o36', 8)))
print('16진수(0x1e) -> 10진수({})'.format(int('0x1e', 16)))
: 규칙성을 가지고 나열되어 있는 수들
일반항
, 정의역
: 연속된 두 항의 차이(공차
, d
)가 일정한 수열
# 등차수열 - n번째 항의 값 출력
inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))
valueN = 0
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))
#공식 이용
inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))
valueN = inputN1 + (inputN-1) * inputD
print(f'{inputN}번째 항의 값: {valueN}')
: 연속된 두 항의 비(공비
, r
)가 일정한 수열
: 수열의 합
: 수열 {}에 대하여 일 때 {}은 {}의 계차수열
21 피보나치 수열 ~ 30 확률(파이썬)
inputN = int(input('n 입력: '))
valueN = 0 #n번쨰 항
sumN = 0 #n번째 항까지 합
valuePreN2 = 0
valuePreN1 = 0
n = 1
while n <= inputN:
if n==1 or n==2:
valueN = 1
valuePreN2 = valueN
valuePreN1 = valueN
sumN += valueN
n += 1
else:
valueN = valuePreN2 + valuePreN1 #세 번째 항: 첫 번째 항 + 두 번째 항
valuePreN2 = valuePreN1
valuePreN1 = valueN
sumN += valueN
n += 1
print(f'{inputN}번째 항의 값: {valueN}')
print(f'{inputN}번째 항까지의 합: {sumN}')
#재귀함수 이용
inputN = int(input('n 입력: '))
def factorialFun(n):
if n == 1: return 1
return n * factorialFun(n - 1)
print(f'{inputN} 팩토리얼: {factorialFun(inputN)}')
: 여러 개의 항을 묶었을 때 규칙성을 가지는 수열
1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, ...
=>
(1), (1, 2), (1, 2, 3), (1, 2, 3, 4), (1, 2, 3, 4, 5),...
5군
: (1, 2, 3, 4, 5)
: n개에서 r개를 택하여 나열하는 경우의 수(순서 고려)
from itertools import permutations sets = [n개] data = itertools.permutation(sets, r개)
: 시작과 끝의 구분이 없는 순열
: 순서 상관없이 n개 중 r개 선택
from itertools import combinations sets = [n개] data = itertools.combinations(sets, r개)
def proFun():
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN - numR), -1):
resultP = resultP*n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
resultR = resultR*n
print(f'resultR: {resultR}')
resultC = int(resultP/resultR)
print(f'resultC: {resultC}')
return resultC
sample = proFun()
print(f'sample: {sample}')
event1 = proFun()
print(f'event1: {event1}')
event2 = proFun()
print(f'event2: {event2}')
probability = (event1 * event2) / sample
print(f'probability: {round(probability*100, 2)}%')