[1644] 소수의 연속합

toru·2022년 9월 19일
0
let target = Int(readLine()!)!
if target == 1 {
    print(0)
}else {
    var isPrime = Array(repeating: true, count: target+1)
    var num = [Int]()
    var n = 0
    var e = 0
    var sum = 0
    var cnt = 0

    for i in 2...target where isPrime[i] {
        var j = 2
        while i*j <= target {
            isPrime[i*j] = false
            j += 1
        }
        if isPrime[i] {
            num.append(i)
        }
    }
    n = num.count
    
    for s in 0..<n {
        while sum < target && e < n {
            sum += num[e]
            e += 1
        }
        if sum == target {
            cnt += 1
        }
        sum -= num[s]
    }
    print(cnt)
}
profile
iOS

0개의 댓글