CT

[BOJ] 9단계 약수, 배수와 소수

kinggora 2023. 4. 4. 23:12
1 5086 배수와 약수
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        while(true) {
            String str = reader.readLine();
            if(str.equals("0 0")){
                break;
            }
            StringTokenizer tokenizer = new StringTokenizer(str);
            int num1 = Integer.parseInt(tokenizer.nextToken());
            int num2 = Integer.parseInt(tokenizer.nextToken());
            if(num1 % num2 == 0) {
                sb.append("multiple").append("\n");
            } else if(num2 % num1 == 0) {
                sb.append("factor").append("\n");
            } else {
                sb.append("neither").append("\n");
            }
        }
        System.out.print(sb);
    }
}

 

2 2501 약수 구하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
        int N = Integer.parseInt(tokenizer.nextToken());
        int K = Integer.parseInt(tokenizer.nextToken());
        for(int i = 1; i <= N; i++){
            if(N % i == 0) {
                K--;
            }
            if(K == 0) {
                System.out.print(i);
                return;
            }
        }
        System.out.println(0);
    }
}

 

3 9506 약수들의 합
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        while(true) {
            String str = reader.readLine();
            if(str.equals("-1")) {
                break;
            }
            int num = Integer.parseInt(str);
            int sum = 0;
            StringBuilder sb = new StringBuilder(num + " = ");
            for(int i = 1; i <= num/2; i++) {
                if(num % i == 0) {
                    sum += i;
                    sb.append(i).append(" + ");
                }
            }
            if(sum == num) {
                System.out.println(sb.substring(0, sb.length() - 3));
            } else {
                System.out.println(num + " is NOT perfect.");
            }
        }
    }
}

 

4 1978 소수 찾기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
        int cnt = 0;
        for(int i = 0; i < n; i++) {
            int num = Integer.parseInt(tokenizer.nextToken());
            boolean isPrime = true;
            if(num <= 1) {
                isPrime = false;
            } else {
                for(int j = 2; j < num; j++) {
                    if(num % j == 0) {
                        isPrime = false;
                        break;
                    }
                }
            }
            if(isPrime) {
                cnt++;
            }
        }
        System.out.println(cnt);
    }
}

*소수: 약수가 1과 자신밖에 없는 2 이상의 자연수 

 

5 2581 소수
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int M = Integer.parseInt(reader.readLine());
        int N = Integer.parseInt(reader.readLine());

        int sum = 0;
        int min = 0;
        for (int i = M; i <= N; i++) {
            boolean isPrime = true;
            if (i <= 1) {
                isPrime = false;
            } else {
                for (int j = 2; j <= i/2; j++) {
                    if (i % j == 0) {
                        isPrime = false;
                        break;
                    }
                }
            }
            if (isPrime) {
                sum += i;
                if (min == 0) {
                    min = i;
                }
            }
        }
        if (sum > 0) {
            System.out.println(sum);
            System.out.println(min);
        } else {
            System.out.println("-1");
        }
    }
}

 

6 11653 소인수분해
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(reader.readLine());
        for(int i = 2; i <= N; i++) {
            while(N % i == 0) {
                N = N / i;
                System.out.println(i);
            }
        }
    }
}