기본 수학 2 [Java]

sua·2022년 9월 25일
0
post-thumbnail

1978번 소수 찾기

문제


풀이

import java.util.Scanner;

public class Main {
    static boolean isPrime(int m) {
        if(m == 1) {
            return false;
        }
        
        int l = 2;
        while(l < m) {
            if(m % l == 0) {
                return false;
            }
            l++;
        }
        
        return true;
    } 
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int cnt = 0;

        for(int i = 0; i < n; i++) {
            int m = sc.nextInt();
            if(isPrime(m)) {
                cnt++;
            }
        }
        System.out.println(cnt);

        sc.close();
    }
}



2581번 소수

문제


풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        boolean arr[] = new boolean[b + 1];
        
        arr[0] = true; arr[1] = true;
        
        for(int i = 2; i <= Math.sqrt(b + 1); i++) {
            for(int j = i * i; j < b + 1; j += i) {
                arr[j] = true;
            }
        }
        
        int min = Integer.MAX_VALUE;
        int sum = 0;
        
        for(int i = a; i < b + 1; i++) {
            if(!arr[i]) {
                if(min > i) {
                    min = i;
                }
                sum += i;
            }
        }
        
        if(sum == 0) {
            System.out.println(-1);
        } else {
            System.out.println(sum);
            System.out.println(min);
        }
        
        sc.close();
    }
}



11653번 소인수분해

문제


풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int i = 2;
        
        while (n >= i){
            if(n % i == 0){
                System.out.println(i);
                n /= i;
            } else {
                i++;
            }
        }

        sc.close();
    }
}



1929번 소수 구하기

문제


풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        boolean arr[] = new boolean[b + a];
        arr[0] = true;
        arr[1] = true;
        
        for(int i = 2; i <= Math.sqrt(b + 1); i++) {
            for(int j = i * i; j < b + 1; j += i) {
                arr[j] = true;
            }
        }
        
        for(int i = a; i < b + 1; i++) {
            if(arr[i] == false) {
                System.out.println(i);
            }
        }
        
        sc.close();
    }
}



4948번 베르트랑 공준

문제


풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        while(true) {
            int n = sc.nextInt();

            if (n == 0) {
                break;
            }

            boolean arr[] = new boolean[2 * n + 1];
            arr[0] = true;
            arr[1] = true;

            for (int i = 2; i <= Math.sqrt(2 * n + 1); i++) {
                for (int j = i * i; j < 2 * n + 1; j += i) {
                    arr[j] = true;
                }
            }

            int cnt = 0;
            for (int i = n + 1; i < 2 * n + 1; i++) {
                if (arr[i] == false) {
                    cnt++;
                }
            }
            System.out.println(cnt);
        }
        
        sc.close();
    }
}



9020번 골드바흐의 추측

문제


풀이

import java.util.Scanner;

public class Main {
    static boolean isPrime(int n) {
        for(int i = 2; i <= Math.sqrt(n); i++) {
            if(n % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int t = sc.nextInt();
        
        for(int i = 0; i < t; i++) {
            int n = sc.nextInt();
            int d;
            int r;
            d = n / 2;
            r = n - d;
            
            while(true) {
                if(isPrime(d) && isPrime(r)) {
                    break;
                } else {
                    d--;
                    r++;
                }
            }
            System.out.println(d + " " + r);
        }
    }
}
profile
가보자고

0개의 댓글