Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 1124. 언더프라임 본문

acmicpc

[BAEKJOON] 1124. 언더프라임

코드와이 2021. 2. 13. 21:45

 

문제링크

www.acmicpc.net/problem/1124

 

1124번: 언더프라임

자연수 X를 소인수 분해 하면, 곱해서 X가 되는 소수의 리스트가 나온다. 12는 2*2*3이고, 1은 소수가 아니다. 이때, X가 언더프라임이기 위한 조건은 소인수 분해 했을 때, 나오는 소수의 개수가 소

www.acmicpc.net

 

package acmicpc.Silver3;

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

public class 언더프라임 {

	static Boolean[] list;
	static int sum;
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int ans = 0;
		
		list = new Boolean[100001];
		list[0] = false;
		list[1] = false;
		init();
		
		for(int i = n ; i <= m ; i++) {
			sum = 0;
			func(i);
			if (list[sum]) ans += 1;
		}
		
		System.out.println(ans);
	}
	
	public static void init() {
		for(int i = 2 ; i <= 100000 ; i++) {
			list[i] = true;
		}
		
		for(int i = 2 ; i <= Math.sqrt(100000) ; i++) {
			if(list[i]) {
				for(int j = i * i ; j <= 100000 ; j += i) {
					list[j] = false;
				}
			}
		}
		
	}
	
	public static void func(int n) {
		int q = 2;
		while(n != 1) {
			if( n % q == 0) {
				sum += 1;
				n /= q;
			}
			else q+=1;
		}
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 1198. 삼각형으로 자르기  (0) 2021.02.13
[BAEKJOON] 1166. 선물  (0) 2021.02.13
[BAEKJOON] 17478.재귀함수가 뭔가요?  (0) 2021.02.10
[BAEKJOON] 1072. 게임  (0) 2021.02.10
[BAEKJOON] 16926. 배열 돌리기1  (0) 2021.02.10