https://www.acmicpc.net/problem/9020
웬만한 소수 문제는 에라토스테네스의 체를 사용해 풀면 시간내에 해결 할 수 있는듯 하다. 입력한 수를 절반으로 나눈 후 절반으로 나눈 수가 소수이면 절반으로 나눈수에 입력한 수를 뺀 수를 소수인지 판별 한 후 소수인지 판별, 그 후 둘다 소수이면 출력을 하도록 했다.
import Foundation
var repeatNum = Int(readLine()!)!
for _ in 1...repeatNum{
var input = Int(readLine()!)!
var boolList = Array(repeating: false, count: input+1)
var numList : [Int] = []
for item in 2...input{
if !boolList[item] {
numList.append(item)
for prime in stride(from: 2*item, to: input, by: item) {
boolList[prime] = true
}
}
}
var length = input/2
for item in 0..<length{
var tmp1 = length-item
var tmp2 = input-tmp1
if numList.contains(tmp1) {
if numList.contains(tmp2) {
print("\(tmp1) \(tmp2)")
break
}
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 3053번: 택시기하학(Swift) (0) | 2021.09.03 |
---|---|
백준 3009: 네 번째 점(Swift) (0) | 2021.09.01 |
백준 4948번: 베르트랑 공준(Swift) (0) | 2021.08.28 |
백준 1929번: 소수 구하기(Swift) (0) | 2021.08.27 |
백준 11653번: 소인수분해 (Swift) (0) | 2021.08.25 |