알고리즘/BOJ문제풀이

186번째 문제 - 1124 언더 프라임

quantdave 2016. 11. 24. 00:45

#include <iostream>

#include <algorithm>


using namespace std;


int main() {

int arr[100001] = { 0 }, a, b;

for (int i = 2; i <= 100000; i++) {

if (arr[i] > 0) 

continue;


for (int j = i + i; j <= 100000; j += i) {

for (int k = j; k%i == 0; k/=i) {

arr[j]++;

}

}

}

arr[0] = 1;

arr[1] = 1;


cin >> a >> b;

int count = 0;

for (int i = a; i <= b; i++) 

{

if (arr[arr[i]] == 0) {

count++;

}

}

cout << count;

}


언더프라임수(실제로 있는 용어인지는 모르겠다)를 찾는 문제.

에라토스테네스의 채를 조금 수정해서 소인수의 갯수를 미리 다 계산 해 놓는다.

이 문제는 몇번이나 틀린 후에 맞췄는데 .. 실수가 있었다면 첫 반복문에 i를 sqrt(100000)까지 반복한 점..

어처구니 없는 실수 ㅋㅋㅋㅋ ;;;

'알고리즘 > BOJ문제풀이' 카테고리의 다른 글

3차 대회  (0) 2016.11.25
187번째 문제 - 1987 알파벳  (0) 2016.11.24
185번째 문제 - 9417 최대 gcd  (0) 2016.11.24
184번째 문제 - 1371 가장 많은 글자  (0) 2016.11.24
미니 대회  (1) 2016.11.23