본문 바로가기
백준알고리즘

백준알고리즘:p1929 소수 구하기

by socialcomputer 2021. 3. 31.
반응형

분류: 기본수학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

 

반응형

댓글