백준 2581번 자바 : 소수

Rena·2022년 3월 13일
0

알고리즘 문제풀이

목록 보기
8/45
  1. ArrayList
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        List<Integer> list = new ArrayList<>();
        int m = in.nextInt();
        int n = in.nextInt();
        int sum = 0;
        for(int i=m; i<=n; i++) {
            if(isPrime(i)) list.add(i);
        }

        if(list.size()==0) {
            System.out.println(-1);
        } else {
            int min = list.get(0);
            int count = 0;
            for (int i=0; i<list.size(); i++) {
                count += list.get(i);
                if(list.get(i)<min) min = list.get(i);
            }
            System.out.println(count);
            System.out.println(min);
        }
    }

    static boolean isPrime(int Number) {
        if(Number == 1){
            return false;
        }

        for(int i = 2; i <= Math.sqrt(Number); i++) {
            if(Number % i == 0) return false;
        }
        return true;
    }
}
  1. 자바 배열을 이용
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int[] list = new int[10000];
        int m = in.nextInt();
        int n = in.nextInt();

        int cnt = 0;
        for(int i=m; i<=n; i++) {
            if(isPrime(i)) {
                list[cnt] = i;
                cnt++;
            }
        }

        if(list[0]==0) {
            System.out.println(-1);
        } else {
            int min = list[0];
            int count = 0;
            for (int i=0; i<list.length; i++) {
                count += list[i];
                if(list[i]<min && list[i]!=0) min = list[i];
            }
            System.out.println(count);
            System.out.println(min);
        }
    }

    static boolean isPrime(int Number) {
        if(Number == 1){
            return false;
        }

        for(int i = 2; i <= Math.sqrt(Number); i++) {
            if(Number % i == 0) return false;
        }
        return true;
    }
}

배열 생성할 때 n이 최대니까 배열 사이즈를 n+1로 해도 될듯..

profile
일을 사랑하고 싶은 개발자

0개의 댓글