본문 바로가기

개발/알고리즘

[백준] 2581번 소수

반응형
 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

입력 & 출력

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라
이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

풀이

소수를 구한 뒤, 이들의 최소 값과 합을 구한다.
소수는 자신을 제외한 다른 수에서 나누어 떨어지는 수로 반복문을 돌려 소수를 판별한다.

Swift 전체 코드

    var decimal : [Bool] = .init(repeating: true, count: 10001)
    var total = 0
    var min = 10001
    
    let first = Int(readLine()!)!
    let last = Int(readLine()!)!
    
    decimal[0] = false
    decimal[1] = false
    
    if last > 2 {
        for i in 3...last {
            for j in 2..<i {
                if i % j == 0 {
                    decimal[i] = false
                    break
                }
            }
        }
    }
    
    for i in first...last {
        if decimal[i] == true {
            total += i
            if min > i {
                min = i
            }
        }
    }
    
    if total == 0 {
        print(-1)
    } else {
        print(total)
        print(min)
    }
반응형