- 약수, 소수, 소인수
import random
rNum = random.randint(100,1000)
print(f'수 : {rNum}')
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}')
soinsuList = []
n=2
while n <= rNum:
if rNum % n == 0:
soinsuList.append(n)
rNum = rNum/n
else:
n += 1
print(soinsuList)
tempNum = 0
for s in soinsuList:
if tempNum != s:
print('{}의 개수: {}'.format(s, soinsuList.count(s)))
tempNum = s
- 최대공약수, 서로소
import random
rNum1 = random.randint(100,1000)
rNum2 = random.randint(100,1000)
print(f'num1 : {rNum1}')
print(f'num2 : {rNum2}')
maxNum = 0
for n in range(1, min(rNum1, rNum2)+1):
if rNum1%n==0 and rNum2%n==0:
print(n)
maxNum = n
print(f'최대공약수 : {maxNum}')
if maxNum ==1:
print(f'{rNum1}과 {rNum2}는 서로소이다.')
- 최소공배수
import random
rNum1 = random.randint(100,1000)
rNum2 = random.randint(100,1000)
print(f'num1 : {rNum1}')
print(f'num2 : {rNum2}')
maxNum = 0
for n in range(1, min(rNum1, rNum2)+1):
if rNum1%n==0 and rNum2%n==0:
print(n)
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진수(0b11001)->10진수 : {}'.format(int(0b11001)))
print('8진수(0o31)->10진수 : {}'.format(int(0o31)))
print('16진수(0x19)->10진수 : {}'.format(int(0x19)))
- 등차수열
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(f'{n}번째 값 :{valueN}\t\t', end='')
print(f'{n}번째 항까지의 합 :{sumN}')
n+=1
continue
else:
valueN += inputD
sumN += valueN
print(f'{n}번째 값 :{valueN}\t\t', end='')
print(f'{n}번째 항까지의 합 :{sumN}')
n+=1
- 등비수열
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(f'{n}번째 값 :{valueN}\t\t', end='')
print(f'{n}번째 항까지의 합 :{sumN}')
n+=1
continue
else:
valueN *= inputR
sumN += valueN
print(f'{n}번째 값 :{valueN}\t\t', end='')
print(f'{n}번째 항까지의 합 :{sumN}')
n+=1
- 계차수열
inputA1 = int(input('a1 : '))
inputAN = int(input('n : '))
inputB1 = int(input('b1 : '))
inputBD = int(input('공차 : '))
valueAN = 0; valueBN = 0
valueANList=[]; valueBNList=[]
n=1
while n<= inputAN:
if n==1:
valueAN = inputA1
valueBN = inputB1
valueANList.append(valueAN)
valueBNList.append(valueBN)
n+=1
continue
else:
valueAN += valueBN
valueBN += inputBD
valueANList.append(valueAN)
valueBNList.append(valueBN)
n+=1
print(f'{valueANList}')
print(f'{valueBNList}')
print('-'*50)
print(f'{inputAN}항의 값 : {valueAN}')
- 피보나치수열
inputN = int(input('n : '))
valueN = 0; sumN = 0
valuePreN1 = 0; valuePreN2 = 0
n=1
while n <= inputN:
if n==1 or n==2:
valueN = 1
print(f'{n}번째 값:{valueN}')
valuePreN2 = valueN
valuePreN1 = valueN
sumN += valueN
n+=1
else:
valueN = valuePreN2 + valuePreN1
print(f'{n}번째 값:{valueN}')
valuePreN2 = valuePreN1
valuePreN1 = valueN
sumN += valueN
n+=1
- 팩토리얼
def factorialFun(n):
if n==1:
return n
else:
return n * factorialFun(n-1)
inputN = int(input('n : '))
print(factorialFun(inputN))
- 군 수열
sumN = 0
flag = True
n = 1; nCnt = 1
searchNC = 0; searchNP = 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(f'{nCnt}항 합 : {round(sumN,2)}')
- 순열
inputN = int(input('n: '))
inputR = int(input('r: '))
result = 1
for n in range(inputN, inputN-inputR, -1):
print(n)
result *= n
print('-'*30)
print(f'result: {result}')
- 조합
inputN = int(input('n: '))
inputR = int(input('r: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(inputN, inputN-inputR, -1):
resultP *= n
print(f'resultP: {resultP}')
for n in range(inputR, 0, -1):
resultR *= n
print(f'resultR: {resultR}')
print('-'*30)
resultC = int(resultP / resultR)
print(f'resultC: {resultC}')
- 확률
def percentageFun():
inputN = int(input('n: '))
inputR = int(input('r: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(inputN, inputN-inputR, -1):
resultP *= n
print(f'resultP: {resultP}')
for n in range(inputR, 0, -1):
resultR *= n
print(f'resultR: {resultR}')
print('-'*30)
resultC = int(resultP / resultR)
print(f'resultC: {resultC}')
print('-'*30)
return resultC
sample = percentageFun()
success = percentageFun()
fail = percentageFun()
probability = round(((success * fail) / sample) * 100 , 2)
print(f'{probability}%')