기초수학_문제풀이(소인수 분해)

jaam._.mini·2023년 11월 15일
0

📒Python 기초 수학

목록 보기
29/46

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
profile
비전공자의 데이터 공부법

0개의 댓글