Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- Math.ceil()
- 프로그래머스 연속된 수의 합 java
- sort
- java 올림
- Arrays
- java 내림
- 알고리즘
- 백준 11723
- 프로그래머스 옹알이 java
- 자바
- time complexity
- java 반올림
- 백준 16927
- 프로그래머스 도둑질 java
- 네트워크
- 백준 4375
- Codility
- Algorithm
- java
- 0으로 채우기
- mysql
- 프로그래머스 숫자의 표현 java
- Math.floor()
- 백준 18290
- 백준 14391
- 코딩테스트
- 백준 15661
- 프로그래머스 네트워크 java
- 백준 16935
- 백준 17425
Archives
- Today
- Total
취미처럼
[백준] 1929번 소수 구하기 본문
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
주어진 수의 범위 내의 모든 소수 구하기
에라토스테네스의 체 알고리즘을 이용
미리 범위만큼의 boolean 배열을 생성하여 소수가 아닌 것은 false로 변경
어떤 수의 배수는 소수가 아니므로 모두 제거
0 과 1은 소수가 아니므로 제외
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
boolean[] arr = new boolean[b + 1];
Arrays.fill(arr, true);
for(int i = 2; i<=Math.sqrt(b); i++ ) {
if(arr[i]){
int j = 2;
while(i * j <= b) {
arr[i * j] = false;
j++;
}
}
}
arr[0] = false;
arr[1] = false;
for(int i = a; i <= b; i++) {
if(arr[i]) {
System.out.println(i);
}
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
[백준] 2309번 일곱 난쟁이 (0) | 2021.02.25 |
---|---|
[백준] 6588번 골드바흐의 추측 (0) | 2021.02.25 |
[백준] 1978번 소수 찾기 (0) | 2021.02.25 |
[백준] 2609번 최대공약수와 최소공배수 (0) | 2021.02.25 |
[백준] 17425번 약수의 합 (0) | 2021.02.25 |
Comments