본문 바로가기
알고리즘/백준 - 파이썬

백준) 11653번 소인수분해 문제 (파이썬)

by AI Sonny 2022. 6. 15.
728x90

문제) 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

 

이번 문제는 2가지 방법을 통해 풀었다. 처음에 for문을 이용하여 풀고 싶었는데 ,

 

while 문이 좀 더 간단하고, 이해하기 쉬웠다.

 

while 문에서 보면 처음 입력값 a를 넣고,  a가 1이 아니면 i를 증감시키도록 

 

그 후 if문을 통해 a  % i 가 0이면 a // i를 반복하도록 하였다.

 

이 후 print(i)를 출력하고, i 를 초기화를 하면 다음과 같이 나온다.

 

1) while 문을 이용한 문제 풀이

a = int(input())
i = 1
while a != 1:                   # 1로만 나누어질때까지 반복
    i += 1                      # 나누어 떨어질때까지 i에 1 추가
    if a % i == 0:              # 나누어 떨어지는경우
        a = a // i              # 나누기 한 N 저장
        print(i)                # 나눈 수 출력
        i = int(1)              # i 초기화 (시간이 오래걸린다..!)

2) for 문을 이용한 문제 풀이

n = int(input())

if n == 1:
    print('')
    
# 2부터 하나씩 나눠보기
for i in range(2, n+1):
    if n % i == 0:
    	#해당 숫자로 나눌 수 없을 때까지 나누기
        while n % i == 0:
            print(i)
            n = n / i 
# if문이 코드길이가 짧다!

이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!

728x90

댓글