2026.03.12 목

권순찬·2026년 3월 12일

천천히 꾸준히

목록 보기
10/50

일단 오늘 푼 문제

언더프라임_1124

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class 언더프라임_1124 {
    public static int realPrime = 0;

    public static void underPrime(int n) {
        int primeCnt = 0;

        for (int i = 2; i <= Math.sqrt(n); i++) {
            while (n % i == 0) {
                primeCnt++;
                n /= i;
            }
        }

        if (n != 1) {
            primeCnt++;
        }

        boolean check = true;

        for (int i = 2; i <= Math.sqrt(primeCnt); i++) {
            if (primeCnt % i == 0) {
                check = false;
            }
        }

        if (check && primeCnt > 1) {
            realPrime++;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        for (int i = a; i <= b; i++) {
            underPrime(i);
        }

        bw.write(realPrime + "");
        bw.flush();
        bw.close();
    }
}

소수판별로직, 소인수분해로직, 2가지를 a~b 사이에서 계속 해줘야해서
main 밖에 전역변수, 전역메서드로 뺐더니 인식을 못하길래 보니까 static 메서드는 꼭 static 들만 가져다 쓸 수 있는것같더라.

profile
아직 많이 서툰 개발자

0개의 댓글