Algorithm/정올 알고리즘

정올_1740 소수(자바) / 수학2

미스터로즈 2021. 6. 30. 20:56

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int M = Integer.parseInt(br.readLine());
        int ans=0;
        int min=Integer.MAX_VALUE;
         
        for (int i = N; i <= M; i++) {
            if(i==1) {
                continue;
            }
            int sq = (int)Math.sqrt(i);
            boolean flag = false;
            for (int j = 2; j <= sq; j++) {
                if(i%j==0) {
                    flag=true;
                    break;
                }
            }
            if(flag==false) {
                ans+=i;
                min = Math.min(min, i);
            }
 
        }
        if(ans==0) {
            System.out.println(-1);
        }else {
            System.out.println(ans);
            System.out.println(min);
        }
    }
}

 

- N~M까지의 소수의 합과 소수중의 최솟값을 출력하는 문제입니다.

 

- ans 즉 소수의 갯수가 0 개 이면 값은 -1을 출력하면 됩니다.

 

- 소수를 구하는 범위는 sqrt를 이용해서 범위를 줄일 수 있습니다.