2581번: 소수백준/단계별로 풀어보기2023. 5. 30. 16:30
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/2581
언어 : Kotlin
문제 설명 :
연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
- 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
- M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.
- M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.
- 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
60 100 |
620 61 |
64 65 |
-1 |
풀이 :
import java.io.*
fun main(args: Array<String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val m = br.readLine().toInt()
val n = br.readLine().toInt()
val list = (m..n).map { it }
var primeList = emptyArray<Int>()
for (i in list.indices) {
var temp = emptyArray<Int>()
for (j in 1 .. list[i]) {
if (list[i] % j == 0) temp += list[i]
}
if (temp.size == 2) primeList += temp[1]
}
if (primeList.isNotEmpty()) bw.write("${primeList.sum()}\n${primeList.min()}") else bw.write("-1")
bw.flush()
bw.close()
}
'백준 > 단계별로 풀어보기' 카테고리의 다른 글
27323번: 직사각형 (0) | 2023.05.31 |
---|---|
11653번: 소인수분해 (0) | 2023.05.30 |
1978번: 소수 찾기 (0) | 2023.05.30 |
9506번: 약수들의 합 (0) | 2023.05.30 |
2501번: 약수 구하기 (0) | 2023.05.30 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!