https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
해결 방법 : 소수 찾고 수수를 통해서 계산
func sol4() {
let n = Int(readLine()!)!
if n == 1 {
return
}
else if n < 4 {
print(n)
return
}
var targetArr: [Bool] = Array(repeating: true, count: n + 1)
for i in 2...Int(sqrt(Double(n))) {
if targetArr[i] == true {
var tempInd = i + i
while tempInd <= n {
targetArr[tempInd] = false
tempInd += i
}
}
}
var temp = n
while !targetArr[temp]{
for i in 2...Int(sqrt(Double(n))) {
if targetArr[i] == false {
continue
}
if temp % i == 0 {
temp /= i
print(i)
break
}
}
}
if temp != 1 {
print(temp)
}
}
sol4()
ideal한 해결방법 :
import Foundation
var input: Int = Int(readLine()!)!
var i = 2
while i * i <= input {
while input % i == 0 {
print(i)
input /= i
}
i += 1
}
if input != 1 {
print(input)
}
'알고리즘' 카테고리의 다른 글
[Swift 알고리즘] 백준 20922 (겹치는 건 싫어) (0) | 2023.06.18 |
---|---|
[Swift 알고리즘] 2579 계단 오르기 (0) | 2023.06.17 |
[Swift 알고리즘] 프로그래머스 154538 (숫자 변환하기) (0) | 2023.06.14 |
[Swift 알고리즘] 프로그래머스 148653(마법의 엘리베이터) (0) | 2023.06.13 |
[Swift 알고리즘] 백준 2225 합분해 (0) | 2023.06.12 |