백준알고리즘
백준알고리즘:p1929 소수 구하기
socialcomputer
2021. 3. 31. 01:02
반응형
분류: 기본수학2
▶문제
▶코드
//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨
package math_2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class p1929 {
//M이상 N이하 사이 소수 모두 구하기
public static void main(String[] args) {
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
if(M==1) M+=1;//1은 검사못하게,, M+1해줌 소수가 아니라서
for(int i=M; i<=N; i++) {
boolean prime = true;
for(int p=2; p<=Math.sqrt(i); p++) {
if(i%p==0) {prime=false; break;}
}
if(prime) bw.write(i+"\n");
}
bw.flush();
}catch (Exception e) {e.printStackTrace();}
}
}
▶처음에 틀린 이유가
나누어 떨어지면 break를 하니 for문을 빠져나가 전체 수를 출력해서다ㅋㅋ
boolean prime으로 소수인지 체크하고 for문 빠져나와서 다시 확인하는 걸로 바꿨다.
▶다른 이유는, M이 1일때를 생각지 못했다.
1은 소수가 아니기 때문에 출력되지 않도록 미리 조치를 해줘야 한다.
그래서 M이 1일 경우 +1을 해줘 해결했다.
채점결과
링크 www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
반응형