import random
rNum = random.randint(100,1000)
print(rNum)
for n in range(1,rNum + 1):
soinsuFlag = 0
if rNum % n == 0:
print('약수 : {}'.format(n))
soinsuFlag += 1
if n != 1:
flag = True
for i in range(2, n):
if n % i == 0:
flag = False
break
if (flag):
print('소수 : {}'.format(n))
soinsuFlag += 1
if soinsuFlag >= 2:
print('소인수: {}'.format(n))
import random
rNum = random.randint(100,1000)
print(f'임의의 수 : {rNum}')
soinsuList = []
n = 2
while n <= rNum:
if rNum % n == 0:
print(f'소인수 : {n}')
soinsuList.append(n)
rNum /= n
else:
n += 1
print(f'소인수 : {soinsuList}')
tempNum = 0
for i in soinsuList:
if tempNum != i :
print(f'{i}\'s count : {soinsuList.count(i)}')
tempNum = i
↓
임의의 수 : 459
소인수 : 3
소인수 : 3
소인수 : 3
소인수 : 17
소인수 : [3, 3, 3, 17]
3's count : 3
17's count : 1
import random
rNum1 = random.randint(100, 1000)
rNum2 = random.randint(100, 1000)
print(f'rNum1 : {rNum1}')
print(f'rNum2 : {rNum2}')
maxNum = 0
for i in range(1, (min(rNum1, rNum2) + 1)):
if rNum1 % i == 0 and rNum2 % i == 0:
print(f'공약수 : {i}')
maxNum = i
print(f'최대공약수 : {maxNum}')
if maxNum == 1:
print(f'{rNum1}과 {rNum2}는 서로소')
↓
rNum1 : 545
rNum2 : 699
공약수 : 1
최대공약수 : 1
545과 699는 서로소
import random
rNum1 = random.randint(100, 1000)
rNum2 = random.randint(100, 1000)
print(f'rNum1 : {rNum1}')
print(f'rNum2 : {rNum2}')
maxNum = 0
for i in range(1, (min(rNum1, rNum2) + 1)):
if rNum1 % i == 0 and rNum2 % i == 0:
print(f'공약수 : {i}')
maxNum = i
minNum = (rNum1 * rNum2) // maxNum
print(f'최대공약수 : {maxNum}')
print(f'최소공배수 : {minNum}')
↓
rNum1 : 510
rNum2 : 144
공약수 : 1
공약수 : 2
공약수 : 3
공약수 : 6
최대공약수 : 6
최소공배수 : 12240
import random
rNum = random.randint(1, 30)
bNum = bin(random.randint(1, 30))
oNum = oct(random.randint(1, 30))
hNum = hex(random.randint(1, 30))
print(f'rNum : {rNum}')
print(f'bNum : {bNum}')
print(f'oNum : {oNum}')
print(f'hNum : {hNum}')
print('2진수 : {}'.format(bin(rNum)))
print('8진수 : {}'.format(oct(rNum)))
print('16진수 : {}'.format(hex(rNum)))
print('bNum : 2진수({}) -> 10진수({})'.format(bNum, int(bNum, 2)))
print('oNum : 8진수({}) -> 10진수({})'.format(oNum, int(oNum, 8)))
print('hNum : 16진수({}) -> 10진수({})'.format(hNum, int(hNum, 16)))
↓
rNum : 3
bNum : 0b1001
oNum : 0o16
hNum : 0x1e
2진수 : 0b11
8진수 : 0o3
16진수 : 0x3
bNum : 2진수(0b1001) -> 10진수(9)
oNum : 8진수(0o16) -> 10진수(14)
hNum : 16진수(0x1e) -> 10진수(30)
sNum = int(input('sNum 입력 : '))
dNum = int(input('dNum 입력 : '))
nNum = int(input('nNum 입력 : '))
fNum = int(input('fNum 입력 : '))
sequenceList=[]
def getSequence(s, d, n):
sequenceList = [s]
for i in range(1, n) :
sequenceList.append(sequenceList[i-1] + d)
return sequenceList
result = getSequence(sNum,dNum,nNum)
def sumSequence(f):
value = 0
for i in range(0, fNum):
value += result[i]
return value
sumSq = sumSequence(fNum)
print('sequenceList : {}'.format(result))
print('{}번째까지의 합 :{}'.format(fNum, sumSq))
↓
sNum 입력 : 4
dNum 입력 : 6
nNum 입력 : 10
fNum 입력 : 5
sequenceList : [4, 10, 16, 22, 28, 34, 40, 46, 52, 58]
5번째까지의 합 :80
valueN = sNum + (fNum - 1) * dNum
print('{}번쨰 항의 값 : {}'.format(fNum,valueN))
sumN = fNum * (sNum + valueN) / 2
print('{}까지의 합 : {}'.format(fNum, sumN))
↓
sNum 입력 : 4
dNum 입력 : 6
nNum 입력 : 10
fNum 입력 : 5
5번쨰 항의 값 : 28
5까지의 합 : 80.0
sNum = int(input('sNum 입력 : '))
rNum = int(input('dNum 입력 : '))
nNum = int(input('nNum 입력 : '))
# fNum = int(input('fNum 입력 : '))
valueN = 0
sumN = 0
n = 1
while n <= nNum:
if n == 1:
valueN = sNum
sumN += valueN
n += 1
continue
valueN *= rNum
sumN += valueN
n+=1
print('{}번째 항의 값: {}'.format(nNum, valueN))
print('{}번째 항까지의 합: {}'.format(nNum, sumN))
↓
sNum 입력 : 2
dNum 입력 : 3
nNum 입력 : 10
10번째 항의 값: 39366
10번째 항까지의 합: 59048
valueN = sNum * (rNum ** (nNum - 1))
print('{}번째 항의 값: {}'.format(nNum, valueN))
sumN = sNum * (1 -(rNum ** nNum)) / (1-rNum)
print('{}번째 항까지의 합: {}'.format(nNum, sumN))
↓
sNum 입력 : 2
dNum 입력 : 3
nNum 입력 : 10
10번째 항의 값: 39366
10번째 항까지의 합: 59048.0
sNum = int(input('sNum 입력 : '))
rNum = int(input('dNum 입력 : '))
nNum = int(input('nNum 입력 : '))
valueN = 0; sumN = 0
n=1
while n <= nNum:
if n == 1:
valueN = sNum
sumN += valueN
print('{}번째 항까지의 합 : {}'.format(n, sumN))
n+= 1
continue
valueN *= rNum
sumN += valueN
print('{}번째 항까지의 합 : {}'.format(n, sumN))
n += 1
print('{}번째 항까지의 합 : {}'.format(nNum, format(sumN,',')))
↓
sNum 입력 : 2
dNum 입력 : 2
nNum 입력 : 30
1번째 항까지의 합 : 2
2번째 항까지의 합 : 6
3번째 항까지의 합 : 14
4번째 항까지의 합 : 30
5번째 항까지의 합 : 62
6번째 항까지의 합 : 126
7번째 항까지의 합 : 254
8번째 항까지의 합 : 510
9번째 항까지의 합 : 1022
10번째 항까지의 합 : 2046
11번째 항까지의 합 : 4094
12번째 항까지의 합 : 8190
13번째 항까지의 합 : 16382
14번째 항까지의 합 : 32766
15번째 항까지의 합 : 65534
16번째 항까지의 합 : 131070
17번째 항까지의 합 : 262142
18번째 항까지의 합 : 524286
19번째 항까지의 합 : 1048574
20번째 항까지의 합 : 2097150
21번째 항까지의 합 : 4194302
22번째 항까지의 합 : 8388606
23번째 항까지의 합 : 16777214
24번째 항까지의 합 : 33554430
25번째 항까지의 합 : 67108862
26번째 항까지의 합 : 134217726
27번째 항까지의 합 : 268435454
28번째 항까지의 합 : 536870910
29번째 항까지의 합 : 1073741822
30번째 항까지의 합 : 2147483646
30번째 항까지의 합 : 2,147,483,646
# sn = a1 * (1 - r^n) / (1-r)
valueN = sNum * (rNum ** (nNum - 1))
print('{}번째 항의 값: {}'.format(nNum, valueN))
sumN = sNum * (1 - (rNum ** nNum)) / (1-rNum)
print('{}번째 항까지의 합: {}'.format(nNum, format(int(sumN), ',')))
↓
sNum 입력 : 2
dNum 입력 : 2
nNum 입력 : 30
30번째 항의 값: 1073741824
30번째 항까지의 합: 2,147,483,646
sNum = int(input('sNum 입력 : '))
nNum = int(input('nNum 입력 : '))
# an = a1 + (n-1) * d
# -> an = (3n^2 - 2n + 4) / 2
valueN = ((3*nNum ** 2)-(3*nNum) + 4) / 2
print('an의 {}번째 항의 값 : {}'.format(nNum, int(valueN)))
↓
sNum 입력 : 2
nNum 입력 : 11
an의 11번째 항의 값 : 167
nNum = int(input('nNum 입력 : '))
valueN = 0; sumN = 0
valuePreN2 = 0
valuePreN1 = 0
n = 1
while n <= nNum:
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(nNum, valueN))
print('{}번째 항까지의 합 : {}'.format(nNum, sumN))
↓
nNum 입력 : 10
10번째 항의 값 : 55
10번째 항까지의 합 : 143
num = int(input('input number : '))
def facFun1(n):
fac = 1
for n in range(1, (n+1)):
fac *= n
return fac
def facFun2(n):
if n == 1:
return n
return n * facFun2(n-1)
print(f'facFun1 -> {num}! :{facFun1(num)}')
print(f'facFun2 -> {num}! :{facFun2(num)}')
import math
num2 = int(input('input number : '))
print(f'math.factorial -> {num2}! : {math.factorial(num2)}')
↓
input number : 10
facFun1 -> 10! :3628800
facFun2 -> 10! :3628800
input number : 10
math.factorial -> 10! : 3628800
flag = True
nCnt = 1; searchNC = 0; searchNP = 0
sumN = 0
n = 1
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, round(sumN, 2)))
↓
1/1
1/2 2/1
1/3 2/2 3/1
1/4 2/3 3/2 4/1
1/5 2/4 3/3 4/2 5/1
1/6 2/5 3/4 4/3 5/2 6/1
1/7 2/6 3/5 4/4 5/3 6/2 7/1
1/8 2/7 3/6 4/5 5/4 6/3 7/2 8/1
1/9 2/8 3/7 4/6 5/5 6/4 7/3 8/2 9/1
1/10 2/9 3/8 4/7 5/6 6/5 7/4 8/3 9/2 10/1
수열의 합이 최초 100을 초과하는 항, 값, 합 : 56항, 10/1, 105.81
# 5p2
nNum = int(input('nNum 입력 : '))
rNum = int(input('rNum 입력 : '))
result = 1
for n in range(nNum, (nNum - rNum), -1):
print('n : {}'.format(n))
result *= n
print('result : {}'.format(result))
↓
nNum 입력 : 5
rNum 입력 : 2
n : 5
n : 4
result : 20
fNum1 = int(input('factorial 입력 : '))
fNum2 = int(input('factorial 입력 : '))
def getNoc(f1, f2):
result1 = 1
for n in range(f1, 0, -1):
result1 *= n
result2 = 1
for n in range(f2, 0, -1):
result2 *= n
print('result1 : {}'.format(result1))
print('result2 : {}'.format(result2))
return result1 * result2
print('모든 경우의 수 : {}'.format(getNoc(fNum1, fNum2)))
↓
factorial 입력 : 5
factorial 입력 : 3
result1 : 120
result2 : 6
모든 경우의 수 : 720
nNum = int(input('nNum 입력 : '))
rNum = int(input('rNum 입력 : '))
def getCombi(n,r):
resultF = 1
resultR = 1
result = 0
for n in range(n, (n-r), -1):
resultF *= n
for i in range(rNum, 0, -1):
resultR *= i
result = int(resultF / resultR)
print('resultF : {}'.format(resultF))
print('resultR : {}'.format(resultR))
return result
print('조합 : {}'.format(getCombi(nNum,rNum)))
↓
nNum 입력 : 6
rNum 입력 : 2
resultF : 30
resultR : 2
조합 : 15
def getProb():
nNum = int(input('nNum 입력 : '))
rNum = int(input('rNum 입력 : '))
resultP = 1
resultR = 1
resultC = 1
for n in range(nNum, (nNum-rNum), -1):
resultP *= n
for r in range(rNum, 0, -1):
resultR *= r
resultC = resultP / resultR
print('resultP : {}'.format(resultP))
print('resultR : {}'.format(resultR))
print('resultC : {}'.format(resultC))
return resultC
sample = getProb()
event1 = getProb()
event2 = getProb()
result = round(((event1 * event2) / sample) * 100,2)
print('probability : {}%'.format(result))
↓
nNum 입력 : 10
rNum 입력 : 6
resultP : 151200
resultR : 720
resultC : 210.0
nNum 입력 : 6
rNum 입력 : 3
resultP : 120
resultR : 6
resultC : 20.0
nNum 입력 : 4
rNum 입력 : 3
resultP : 24
resultR : 6
resultC : 4.0
probability : 38.1%
📢