반응형
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
예제 입력
3 16
예제 출력
3
5
7
11
13
나의 답안:
var input = readLine()!.components(separatedBy: " ").map{Int(String($0))!} //입력 받기
var settingArray = Array(repeating: 0, count: input.last! + 1) //0으로 된 빈 배열 선언
for i in input.first!...input.last! { //3~16이면 범위 내에 있는 수들은 배열에 집어넣기
settingArray[i] = i //범위 내에 없으면 0이 됨
}
for i in 2...input.last! { //2부터 체 거르기 시작
for j in stride(from:i+i, through:input.last! ,by: i) { //i가 2이면 4,6,8,10..이 0으로 됨(소수가 아닌것들)
settingArray[j] = 0
}
}
settingArray[0] = 0 //0은 소수가 아님
settingArray[1] = 0 //1도 소수가 아님
for i in input.first!...input.last! {
if settingArray[i] != 0 { //배열에 있는 값이 0이 아닌 수들이 소수임
print(settingArray[i]) //소수 출력
}
}
반응형
'코딩 테스트' 카테고리의 다른 글
코딩테스트 - [백준: 10815] 숫자 카드(이진 탐색) (0) | 2022.09.14 |
---|---|
코딩 테스트 - [백준 7568] : 덩치 (0) | 2022.09.14 |
코딩테스트 - [day3] 문자열에서 특정 문자 개수 찾기 (2941:크로아티아 알파벳) (0) | 2022.09.06 |
코딩 테스트 - [day3] 백준: 1110 - 더하기 사이클 (0) | 2022.09.05 |
코딩테스트 - [day1]약수의 개수와 덧셈 (0) | 2022.09.02 |