Where who wants to meet someone
백준 Swift [11653] 소인수분해 본문
728x90
난이도
브론즈 I
문제
https://www.acmicpc.net/problem/11653
내 답안
var n = Int(readLine()!)!
// 반복문을 하나만 사용할 것이라 나누는 수를 나타낼 프로퍼티 i 생성(초기 2)
var i = 2
// n이 1이 될 때까지 반복
while n != 1 {
// n을 i로 나눈 나머지가 0이라면(소인수분해가 정상적으로 진행되면)
if n % i == 0 {
// n을 i로 나눈 몫으로 변경 및 현재 나누는 수 출력
n /= i
print(i)
} else {
// 나머지가 0이 아니라면 i값 증가
i += 1
}
}
- 소인수분해는 1보다 큰 자연수를 소인수(소수인 인수)들만의 곱으로 나타내는 것 또는 합성수를 소수의 곱으로 나타내는 방법을 말한다.
(출처: 위키백과)
- 소수인 인수로만 해야하는데 i를 어떻게 늘려줄까 고민하다가(2, 3, 5, 7등 케이스가 띄엄띄엄 있어서) 어차피 낮은 수부터 차례차례 진행하게 된다면 대개 2, 3선에서 정리가 되고 많아져봐야 나머지가 0이 아닌 케이스에서 걸러지는 등 그 수까지만 올라갈 것이기 때문에 1씩 늘려도 괜찮겠다 싶었다.
'백준 알고리즘 문제 기록 > 약수, 배수와 소수' 카테고리의 다른 글
백준 Swift [2581] 소수 (0) | 2023.07.01 |
---|---|
백준 Swift [1978] 소수 찾기 (0) | 2023.07.01 |
백준 Swift [9506] 약수들의 합 (0) | 2023.07.01 |
백준 Swift [2501] 약수 구하기 (0) | 2023.07.01 |
백준 Swift [5086] 배수와 약수 (0) | 2023.07.01 |