Where who wants to meet someone

백준 Swift [2581] 소수 본문

백준 알고리즘 문제 기록/약수, 배수와 소수

백준 Swift [2581] 소수

Lust3r 2023. 7. 1. 17:38
728x90

난이도

브론즈 II

 

문제

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

 

2581번: 소수

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

www.acmicpc.net

 

내 답안

let m = Int(readLine()!)!
let n = Int(readLine()!)!

// 소수를 담을 primeNumberArr
var primeNumberArr: [Int] = []

// m부터 n까지 반복문 진행
for i in m...n {
    // 약수의 개수를 담을 프로퍼티 count 초기화
    var count = 0

    // 1부터 i까지 반복문 진행
    for j in 1...i {
        // i를 j로 나눈 나머지가 0이라면(= 약수) count에 1 더하기
        if i % j == 0 {
            count += 1
        }
    }

    // j 반복문이 끝났을 때 count가 2라면 primeNumberArr에 현재 숫자 i 추가
    if count == 2 {
        primeNumberArr.append(i)
    }
}

// primeNumberArr가 비어있다면(= 소수가 없음) -1 출력
if primeNumberArr.isEmpty {
    print("-1")
} else {
    // 소수가 있다면 전부 합한 값과 최소값을 출력
    print(primeNumberArr.reduce(0, +))
    print(primeNumberArr.min()!)
}