본문 바로가기

알고리즘(Algorithm)

소수 판별 2

문제


자연수n,m이 주어질 때, n부터m까지 존재하는 소수를 모두 출력하는 프로그램을 작성하여라. 여기서 소수란, 약수가 1과 자기자신밖에 존재하지 않는 수를 말한다.

 

입력


첫째 줄에 자연수 n, m이 주어진다. (1≤n,m≤20,000)

 

출력


첫째 줄에 n부터m까지 존재하는 소수를 모두 출력한다.

 

예제 입력

1 10

예제 출력

2 3 5 7

 

예제 입력

13 30

예제 출력

13 17 19 23 29
 
import java.util.Scanner;
public class Main{
    public static void main(String[] args){

           // Please Enter Your Code Here
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();  // 시작 수
        int b = sc.nextInt();  // 끝 수

        int count = 0;  // 나눠지는 수가 있는지 카운트

        for(int i=a;i<=b;i++){ // 2 부터 끝수까지
            for(int j=2;j<=b;j++){ // 첫 수 부터 끝수까지

                if(i%j ==0){ //나눠지는 수 가 있으면
                    count++;  // count +1
                }
            }

            if(count ==1){ // 나눠지는 수가 자기 자신밖에 없으면
                System.out.print(i+ " ");  // i값 출력
                count =0 ;					// count 초기화
            }else{ // 그렇지 않으면
              count =0 ;					//그냥 count 초기화
            }
        }
    
	}
}
 

 

 
다른 코드
 
import java.util.Scanner;
public class Main{
    public static void main(String[] args){

      // Please Enter Your Code Here
       
      Scanner sc = new Scanner(System.in);
       
      int a = sc.nextInt();
      int b = sc.nextInt();
      
      String answer ="";
      int count =0;
       
      if(b>2 &&a>=2){
          for(int i =a;i<b;i++){
            for(int j=2;j<i;j++){
              if(i%j==0){
                count ++ ;
              }
            }
            if(count<1){
                answer += i+ " ";
              }
            count =0;
        }
      }else{
          for(int i =2;i<=b;i++){
            for(int j=2;j<i;j++){
              if(i%j==0){
                count ++ ;
              }
            }
            if(count<1){
                answer += i+ " ";
              }
            count =0;
        }
      }
      System.out.println(answer);
    }
}

 

 

후기 -  첫번째 코드랑 다르게 두번째는 for 문에서 j 값을 i로 제한하므로 효율면에서 더 좋다 또한 1은 1과 자기 자신밖에 나눠지지 않지만 수학적 정의로 보면 소수가 아니므로 1~2 까지의 조건을 따로 뺴서 처리해 줬으므로 2번 코드가 정확성 면에서도 더 좋다고 할 수 있다

'알고리즘(Algorithm)' 카테고리의 다른 글

점수 계산  (1) 2023.06.04
최댓값  (0) 2023.06.04
역으로 출력하기  (0) 2023.05.24
삼각형 출력 3  (0) 2023.05.24
삼각형 출력 2  (0) 2023.05.23