백준 9020번: 골드바흐의 추측(Swift)

https://www.acmicpc.net/problem/9020

 

9020번: 골드바흐의 추측

1보다 큰 자연수 중에서  1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아

www.acmicpc.net

웬만한 소수 문제는 에라토스테네스의 체를 사용해 풀면 시간내에 해결 할 수 있는듯 하다. 입력한 수를 절반으로 나눈 후 절반으로 나눈 수가 소수이면 절반으로 나눈수에 입력한 수를 뺀 수를 소수인지 판별 한 후 소수인지 판별, 그 후 둘다 소수이면 출력을 하도록 했다. 

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
        }
    }
}
}