반응형
링크
https://www.acmicpc.net/problem/2312
풀이
2~100,000의 수를 소인수분해 하는 프로그램입니다.
저는 2~100,000까지의 소수를 구하고 그 소수들로 n을 1이 될 때까지 나누어 소인수 분해를 했습니다.
코드
//2312_수 복원하기
#include <cstdio>
#include <math.h>
using namespace std;
int arr[30000] = { 2 };
int T, n, cnt;
int main() {
for (int i = 3; i <= 100000; i += 2) { //소수 구하기
int flag = 1;
for (int j = 3; j <= sqrt(i);++j) {
if (i%j == 0) {
flag = 0;
break;
}
}
if (flag) arr[++cnt] = i;
}
scanf("%d", &T);
while (T--) {
scanf("%d", &n);
for (int i = 0; i <= cnt; ++i) { //소인수 분해
int c = 0;
while (!(n%arr[i])) {
c++;
n /= arr[i];
}
if(c!=0) printf("%d %d\n", arr[i], c);
if (n == 1) break;
}
}
return 0;
}
반응형
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ] 14490 백대열 (0) | 2019.08.11 |
---|---|
[백준 BOJ][deque] 2164 카드2 (0) | 2019.08.11 |
[백준 BOJ] 1074 Z (0) | 2019.08.11 |
[백준 BOJ] 1436 영화감독 숌 (0) | 2019.08.11 |
[백준 BOJ] 1018 체스판 다시 칠하기 (0) | 2019.08.10 |