Q>
A>
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 = 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
A>해설
# 1. 소인수 분해
#(1) 난수를 발생시켜야 하기 때문에 [random] 사용
import random
#(2) 100- 1000 숫자 중에서 1개에 대한 난수를 발생 시킴
rNum = random.randint(100, 1000)
print(f'[rNum] : {rNum}')
#(7) ex. 20의 소인수 분해 = 2x2x5 | 2,2,5를 담아줄 LIST가 필요
#(8) 대괄호를 이용해 선언
soinList = []
#(3) 소인수 분해 : while문 이용
#(4) 1은 의미가 없어서, 2부터 시작
n = 2
while n <= rNum:
#(5) 소인수 분해 1개 완성 됨
if rNum % n == 0:
#(6) 출력
print(f'[소인수] : {n}')
#(9) .append(n) : [n을] [soinList = []]에 [가져다준다/추가한다]
soinList.append(n)
#(10) == 0:(0으로 나누어 떨어진거면) 자기 자신에게 다시 할당
rNum = rNum / n
#(11) 나누어 떨어지지 않으면, 반복 진행을 위해 1을 더해줌
else:
n += 1
#(12)반복 완료----------------------------------------------------------------
#(13) 출력
print(f'[soinList] : {soinList}')
# 2. 각 소인수에 대한 지수 출력
#(14) 변수 선언
tempNum = 0
#(15) 소인수 리스트를 가지고 for문을 돔 : 리스트 안의 숫자는 [n]에 할당 됨
for s in soinList:
#(16)
if tempNum != s:
#(17) 소인수리스트에 있는 각 숫자의 갯수를 확인
print(f'{s}\'s count: {soinList.count(s)}')
#(18) 두번째 반복이 돌때, 같은 수가 나와서 또 카운팅 되지 않게 [s]에 할당
tempNum = s