[파이썬] 백준 11653번 : 소인수분해

Dayon·2022년 12월 15일
0

코딩테스트

목록 보기
4/5
post-thumbnail

백준 11653번 문제


Python 나눗셈

1. "/" : 단순 나눗셈 - 가장 기본적인 나눗셈 (float형)

a = 7
b = 4
print("a 나누기 b: ", a/b)

# a 나누기 b: 1.75

2. "//" : 나눗셈의  - 나눗셈 결과의 '몫'을 가져옴

a = 7
b = 4
print("a 나누기 b의 몫:", a//b)

# a 나누기 b의 몫: 1

3. "%" : 나눗셈의 나머지 - 나눗셈 결과의 '나머지'를 가져옴

a = 7
b = 4
print("a 나누기 b의 나머지:", a%b)

# a 나누기 b의 나머지: 3

4. divmod(): 나눗셈의 몫과 나머지(튜플 형식) - 나눗셈 결과의 '몫'과 '나머지'를 한번에 가져옴

나눗셈 연산을 수행하고, 그 연산의 결과인 몫과 나머지를 튜플형식으로 한번에 가져옵니다.

따라서 이 결과를 변수에 넣어 사용할 때에는, 2개의 변수가 필요합니다.

a = 7
b = 4
c, d = divmod(a, b)
print("a 나누기 b의 몫:", c, "/ 나머지:", d)

# a 나누기 b의 몫: 1 / 나머지: 3



첫번째 시도 실패

소인수분해가 아니라 인수분해를 해버렸다.

num = int (input())
for i in range(2,num+1) :
    m,n=divmod(num,i)
    if m == 1 : 
        break;
    else :     
        if (n == 0) :
            print (i)
            num == m     ## 여기서 i가 처음부터 시작되어야 하는데, 그렇지 않은듯 하다 
        else :
            i = i + 1

출력결과

12 
2
3
4
6



코드

# 11653 소인수분해

num = int(input())

for i in range(2, num+1):    # 2 ~ num까지 
    if num == 1 :            # 몫이 1이면 종료 
        break;
    if num % i == 0:         # 같은 숫자를 나눌 수 있을 때까지 나누기 
        while num % i == 0:
            print(i)
            num = num / i
profile
success is within reach, allow yourself time

0개의 댓글