acmicpc
[BAEKJOON] 1124. 언더프라임
코드와이
2021. 2. 13. 21:45
문제링크
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;
}
}
}