소수
정말 개많이 틀린 문제;;;.... 결국 남의 코드를 참고했다.
예전에 정리했던 적이 있었는데 최적의 코드라고 보기는 어려웠고
백준에서 맞은 사람의 코드도 살펴보았는데 다들 비슷하게 푼 느낌이라 넘어갔었다.
아무튼 이번 문제는 에라토스테네스의 체라는 방법을 다들 사용하였다...!!
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Baek2581 { // 소수
public static boolean prime[];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int M = Integer.parseInt(br.readLine());
int N = Integer.parseInt(br.readLine());
prime = new boolean[10001];
get_prime();
int sum = 0;
int min = 50;
for(int i = M; i <= N; i++) {
if(prime[i] == false) { // 소수이면
sum += i;
if(min == 50) { // 그냥 첫번째 값 찾는거
min = i;
}
}
}
if(sum == 0)
System.out.println("-1");
else {
System.out.println(sum);
System.out.println(min);
}
}
public static void get_prime() { // 에라토스테네스의 체
prime[0] = prime[1] = true;
for(int i = 2; i <= Math.sqrt(prime.length); i++) { // N값의 루트값까지만 확인하면 된다.
if(prime[i] == true) continue;
for(int j = i * i; j < prime.length; j += i) // i의 배수값을 true로 만든다.
prime[j] = true;
}
}
}
에라토스테네스의 체 방법을 사용하여 i의 배수만큼을 true로 바꿔주면
소수값은 false 가 된다!
남의 코드를 아주 참고했지만 이제 내 코드로~~!!!!
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 11399번_ ATM for JAVA (0) | 2021.10.11 |
---|---|
[BaekJoon]백준 11047번_동전0 for JAVA (0) | 2021.10.05 |
[BaekJoon] 백준 1978번 _소수찾기 for Java (0) | 2021.09.25 |
[BaekJoon] 백준 1011번 _Fly me to the Alpha Centauri for JAVA (0) | 2021.09.24 |
[BeakJoon] 백준 10757번_ 큰 수 A+B for Java (0) | 2021.09.21 |