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

zsunny·2022년 7월 2일
0

📌 문제

💯 정답

• 방법 1. 정답!! try - except 예외처리

n = int(input())
num = 2

 while num <= n:
 	
    try:
        if n % num == 0:
            print(num)
            n = n // num
        else:
            num += 1
    except:
        break

• 방법 2. 정답!! try - except 사용 X

n = int(input())
num = 2

while num <= n:
    if n == 1:
        break
    if n % num == 0:
        print(num)
        n = n // num
    else:
        num += 1

• 방법 3. 정답!! 나누면서 몫 출력

n = int(input())
result = list(range(2, n))
result.sort(reverse=True)

for i in result:
    if n % i == 0:
        print(n // i)
        n = i

• 방법 4. 오답.. 나누는 수(제수)를 출력

n = int(input())
result = list(range(2, n))
result.sort(reverse=True)
print(result)

for i in result:
    if n % i == 0:
        print(i)        // 나누는 수가 무조건 2->3->4->••• 처럼 증가하게 됨
        n = n // i

📝 설명

• 방법 4. 다음 반복문에서 i가 무조건 +1씩 증가하게 되므로 불가능한 식이된다.
		 즉, 12를 i가 2일때 6으로 나누어 떨어져 i(2)를 출력한다.
         다음 반복문에서 2로 한번 더 나누어 질 수 있음에도 불구하고 i는 3이 되어야 한다.
         (=> 반복된 인수가 나올 수가 없다)

⭐️ 알고가기 _ sort( )

🔎 sort( )

  • 리스트.sort(reverse=True)
    리스트.sort()의 반대로 역순으로 정렬한다.
profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글