import random
rNum = random.randint(100, 1000)
print(f'rNum: {rNum}')
yakList = []
soList = []
soinList = []
for num in range(1, rNum+1):
soinsuFlag= 0
#약수
if rNum % num == 0:
print(f'[약수]: {num}')
soinsuFlag += 1
#소수
if num != 1:
flag = True
for n in range(2, num):
if num % n == 0:
flag = False
break
if flag:
print(f'[소수]: {num}')
soinsuFlag += 1
#소인수
if soinsuFlag >= 2:
print(f'[소인수]: {num}')
import random
rNum = random.randint(100, 1000)
print(f'rNum: {rNum}')
soinList = []
n = 2
while n <= rNum:
if rNum % n == 0:
print(f'소인수: {n}')
soinList.append(n)
rNum /= n
else:
n += 1
print(f'soinList: {soinList}')
tempNum = 0
for s in soinList:
if tempNum != s:
print(f'{s}\'s count: {soinList.count(s)}')
tempNum = s # 이미 출력된 수에 대해서는 더이상 셀 수 없게 함
import random
rNum1 = random.randint(100, 1000)
rNum2 = random.randint(100, 1000)
print(f'rNum1: {rNum1}')
print(f'rNum2: {rNum2}')
maxNum = 0
for n in range(1, (min(rNum1, rNum2)+1)):
if rNum1 % n == 0 and rNum2 % n == 0:
print(f'공약수: {n}')
maxNum = n
print(f'최대공약수: {maxNum}')
if maxNum == 1:
print(f'{rNum1}과 {rNum2}는 서로소이다.')
minNum = int(rNum1 * rNum2 / maxNum)
print(f'최소공배수: {minNum}')
inputA1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))
valueN = 0; sumN = 0
n = 1
while n <= inputN:
if n == 1:
valueN = inputA1
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 합: {}'.format(n, sumN))
n += 1
continue
valueN += inputD
sumN += valueN
n += 1
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 합: {}'.format(n, sumN))
valueN = inputA1 + (inputN - 1) * inputD
sumN = inputN * (inputA1 + valueN) / 2
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 합: {}'.format(inputN, sumN))
inputA1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))
valueN = 0
sumN = 0
n = 1
while n <= inputN:
if n == 1:
valueN = inputA1
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 합: {}'.format(n, sumN))
n += 1
continue
valueN *= inputR
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 합: {}'.format(n, sumN))
n += 1
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 합: {}'.format(inputN, sumN))
valueN = inputA1 * (inputR ** (inputN - 1))
sumN = inputA1 * (1 - inputR ** inputN) / (1 - inputR)
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 합: {}'.format(inputN, sumN))
inputA1 = int(input('a1 입력: '))
inputN = int(input('an 입력: '))
valueN = (3 * (inputN ** 2) - (3 * inputN) + 4) / 2 #계차 수열의 일반항 이용
print(f'{inputN}번째 항의 값: {int(valueN)}')
inputN = int(input('n 입력: '))
valueN= 0; sumN = 0;
valuePre2 = 0
valuePre1 = 0
n = 1
while n <= inputN:
if n == 1 or n == 2: # 첫번째, 두번째 항은 예외로 두기
valueN = 1
valuePre2 = valueN
valuePre1 = valueN
sumN += valueN
n += 1
else:
valueN = valuePre2 + valuePre1 # 피보나치 수열 공식
valuePre2 = valuePre1
valuePre1 = valueN
sumN += valueN
n += 1
print('{}항의 값: {}'.format(inputN, valueN))
print('{}항까지의 합: {}'.format(inputN, sumN))
def facFun1(n):
fac = 1
for n in range(1, (n+1)):
fac *= n
return fac
num = int(input('input number: '))
print(f'{num}!: {facFun1(num)}')
def facFun2(n):
if n == 1:
return n # 재귀함수 돌다가 n이 1이 되자마자 return으로 끝내버림
return n * facFun2(n-1)
num = int(input('input number: '))
print(f'{num}!: {facFun2(num)}')
import math
num = int(input('input number: '))
valueN = math.factorial(num)
print(f'{num}!: {valueN}')
flag = True
n = 1
nCnt = 1; searchNC = 0; searchNP = 0
sumN = 0
while flag:
for i in range(1, (n+1)):
print('{}/{} '.format(i, (n-i+1)), end='')
sumN += (i / (n-i+1))
nCnt += 1
if sumN > 100:
searchNC = i
searchNP = n-i+1
flag = False
break
print()
n += 1
print('수열의 합이 최초 100을 초과하는 항, 값, 합: {}항, {}/{}, {}'.format(nCnt, searchNC, searchNP, sumN))
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
result = 1
for n in range(numN, numN-numR, -1):
print('n : {}'.format(n))
result *= n
print(f'{numN}P{numR} : {result}')
fNum1 = int(input('factorial1 입력: '))
result1 = 1
for n in range(fNum1, 0, -1):
result1 *= n
print('result1: {}'.format(result1))
fNum2 = int(input('factorial2 입력: '))
result2 = 1
for n in range(fNum2, 0, -1):
result2 *= n
print('result2: {}'.format(result2))
result = result1 * result2
print('모든 경우의 수: {}'.format(result))
-> 7! 곱하기 3!
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, numN-numR, -1):
resultP *= n
print('resultP : {}'.format(resultP)) # nPr
for n in range(numR, 0, -1):
resultR *= n
print('resultR : {}'.format(resultR)) # r!
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC)) # nCr
-> 순열과 팩토리얼 결과값을 각각 구하고나서 조합을 구함
result = (1/resultC) * 100
print('{}%'.format(round(result, 2)))
-> 카드 7장 중 3장을 뽑았을 때 그 세 장이 3,4,5일 확률 구하기
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 *= n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
resultR *= n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
return resultC
sample = proFun()
print('sample: {}'.format(sample))
event1 = proFun()
print('event1: {}'.format(event1))
event2 = proFun()
print('event2: {}'.format(event2))
probability = (event1 * event2) / sample
print('확률: {}%'.format(round(probability * 100, 2)))
-> 조합을 구하는 함수를 만들어서 확률계산에 이용
<제로베이스 데이터 취업 스쿨>