https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
number = int(input())
i = 2
while number != 1:
if number % i == 0:
print(i)
number = number // i
else:
i += 1
입력값 N이 1이상 천만 이하이다.
1의 소인수는 존재하지 않는다.
따라서 1을 입력하면 아무런 출력도 나와서는 안된다.
이걸 몰라서 1일때 1을 출력했다가 계속 "틀렸습니다"가 도출되어서...
1은 소수가 아니란걸 알고있었는데...
divmod() 빌트인 함수를 써도 좋지만, 단점은 몫과 나머지를 한번에 계산한다는 점이다.
위의 코드와 같이 나머지가 0일 경우 몫 계산을 하는 것처럼 따로따로 실행해야 할 때는 연산자를 이용하는 것이 바람직하다. 아래는 divmod() 빌트인 함수를 사용한 경우이다.
number = int(input())
i = 2
while number != 1:
number, r = divmod(number, i)
if r == 0 :
print(i)
else:
number = number * i + r
i += 1
'알고리즘 > 백준-파이썬' 카테고리의 다른 글
[백준] 11726번 (python 파이썬) (0) | 2022.04.16 |
---|---|
[백준] 1463번 (python 파이썬) (0) | 2022.04.15 |
[백준] 11576번 (python 파이썬) (0) | 2022.04.14 |
[백준] 2745번 (python 파이썬) (0) | 2022.04.14 |
[백준] 11005번 (python 파이썬) (0) | 2022.04.14 |