📚 약수와 소수
- 100부터 1000 사이의 난수
- 약수, 소수, 소인수 출력
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}')
📚 소인수와 소인수분해
- 100부터 1000사이의 난수
- 소인수분해 후 지수 출력
soinsuList = []
n = 2
while n <= rNum:
if rNum % n == 0:
print(f'소인수: {n}')
soinsuList.append(n)
rNum /= n
else:
n += 1
print(f'soinsuList: {soinsuList}')
📚 최대공약수
- 100부터 1000사이의 2개의 난수
- 공약수, 최대공약수 출력 후 서로소 확인
for n in range(1, (min(rNum1, rNum2)+1)):
if rNum1 % n == 0 and rNum2 % n ==0:
maxNum = n
print(f'최대공약수: {maxNum}')
if maxNum == 1:
print(f'{rNum1}과 {rNum2}는 서로소이다.')
📚 최소공배수
- 100부터 1000사이의 2개의 난수
- 최대공약수와 최소공배수 출력
maxNum = 0
for n in range(1, (min(rNum1, rNum2)+1)):
if rNum1 % n == 0 and rNum2 % n == 0:
maxNum = n
print(f'최대공약수: {maxNum}')
minNum = (rNum1 * rNum2) // maxNum
print(f'최소공배수: {minNum}')
📚 진법
dNum = int(input('10진수 입력: '))
print('2진수: {}'.format(bin(dNum)))
print('8진수: {}'.format(oct(dNum)))
print('16진수: {}'.format(hex(dNum)))
print('2진수(0b10101) -> 10진수({})'.format(int('0b10101', 2)))
print('8진수(0o135) -> 10진수({})'.format(int('0o135', 8)))
print('16진수(0x5f) -> 10진수({})'.format(int('0x5f', 16)))
📚 등차수열
valueN = inputA1 + (inputN - 1) * inputD
print('{}번째 항의 값: {}'.format(inputN, valueN))
sumN = inputN * (inputA1 + valueN) / 2
print('{}번째 항까지의 합: {}'.format(inputN, int(sumN)))
📚 등비수열
valueN = inputA1 * (inputR ** (inputN - 1))
print('{}번째 항의 값: {}'.format(n, valueN))
sumN = inputA1 * (1- (inputR ** inputN)) / (1 - inputR)
print('{}번째 항까지의 합: {}'.format(n, sumN))
📚 시그마
- 첫째날 쌀 두톨, 둘째날부터 하루 전의 2배에 해당하는 쌀
- 30일째 되는 날 받게 되는 쌀의 개수
sumN = inputA1 * (1 - (inputR ** inputN)) / (1 - inputR)
print('{}번째 항까지의 합: {}'.format(inputN, format(sumN, ',')))
📚 계차수열
inputA1 = int(input('a1 입력 : '))
inputN = int(input('an 입력 : '))
valueN = ((3 * inputN ** 2) - (3 * inputN) + 4) / 2
print('an의 {}번째 항의 값: {}'.format(inputN, int(valueN)))
📚 피보나치수열
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('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 합: {}'.format(inputN, sumN))
📚 군 수열
- 수열의 합이 최초 100을 초과하는 n번째 항의 값과 n을 출력
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))
📚 순열
- nPr 순열 값 구하기 n(n-1)(n-2)...(n-r+1)
for n in range(numN, (numN - numR), -1):
print('n : {}'.format(n))
result *= n
print('result: {}'.format(result))
result1 = 1
result2 = 1
for n in range(fnum1, 0, -1):
result1 *= n
print('result1: {}'.format(result1))
for n in range(fnum2, 0, -1):
result2 *= n
print('result2: {}'.format(result2))
print('모든 경우의 수: {}'.format(result1*result2))
📚 조합
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 = resultP / resultR
print('resultC: {}'.format(resultC))
📚 확률
- 박스에 '꽝' 6장, '선물' 4장
-'꽝' 3장, '선물' 3장 뽑는 확률
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
print('result: {}%'.format(round(((event1*event2)/sample)*100, 2)))