1. 약수, 소수, 소인수
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} : 소인수')
  1. 소인수분해
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
  1. 최대공약수, 서로소
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}는 서로소이다.')
  1. 최소공배수
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}')
  1. 진수
dNum = int(input('10진수 입력: '))

print('2진수 : {}'.format(bin(dNum)))
print('8진수 : {}'.format(oct(dNum)))
print('16진수 : {}'.format(hex(dNum)))

# 10진수 25로 변환
print('2진수(0b11001)->10진수 : {}'.format(int(0b11001)))
print('8진수(0o31)->10진수 : {}'.format(int(0o31)))
print('16진수(0x19)->10진수 : {}'.format(int(0x19)))
  1. 등차수열
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
  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
  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}')
  1. 피보나치수열
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
  1. 팩토리얼
def factorialFun(n):
    if n==1:
        return n
    else:
        return n * factorialFun(n-1)

inputN = int(input('n : '))
print(factorialFun(inputN))
  1. 군 수열
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)}')
  1. 순열
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}')
  1. 조합
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}')
  1. 확률
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}%')
profile
21세기 주인공

0개의 댓글