728x90
문제
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
코드
A=int(input())
i=2
B=A
while i!=(A+1):
if (B%i)==0:
B=B/i
print(i)
i==2
else:
i+=1
풀이
소인수란 주어진 자연수를 나누어 떨어뜨리는 약수 중에서 소수(2, 3, 5, 7)인 약수를 말한다.
즉, 2 이상의 소수로 나누어 떨어지는 반복문을 활용하여 문제 풀이가 가능하다
일단 원본 변수 A와 계산할 변수 B를 설정한다.
그리고 i를 2로 지정한 후 (A+1)의 범위까지 1씩증가하는 반복문을 만든다.
(A+1까지 범위를 설정한 이유는 소수일 경우 소인수가 자기 자신이기 때문에 범위가 원본보다 커야 탐색이 가능하다)
if문을 활용하여 나누어 떨어지는(나머지가 0) 경우 B를 소인수로 나눈 후 다시 i값을 2부터 시작하는 조건문을 만들고,
나누어 떨어지지 않을 경우 i가 증가하는 조건을 추가한다.
위 방식을 활용하면 2부터 탐색을 시작해서 나누어 떨어지면 입력값을 나눈 뒤, 다시 2부터 하나씩 값을 올리며 탐색을 하여 소인수를 찾을 수 있다.
'PS' 카테고리의 다른 글
[백준] 1929번 : 소수 구하기(에라토스테네스의 체)- 파이썬[Python] (0) | 2022.01.04 |
---|---|
[백준] 1002번 : 터렛(두 원의 위치 관계)- 파이썬[Python] (0) | 2022.01.04 |
[백준] 1316번 : 그룹 단어 체커- 파이썬[Python] (0) | 2022.01.03 |
[백준] 1934번 : 최소공배수(유클리드 호제법)- 파이썬[Python] (0) | 2021.12.29 |
[백준] 1789번 : 수들의 합 - 파이썬[Python] (0) | 2021.12.29 |
댓글