#문제

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

#작성 코드

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
29
30
31
32
33
34
35
#include <iostream>
#include <algorithm>
using namespace std;
 
int n;
int prime[10000000];
int numprime=0;
int INF = 10000000;
int main(){
    cin>>n;
    int tmp = n;
    
    for(int i=2; i<=n; i++){
        prime[i] = i;
    }
    for(int i=2, j; i*i<=n; i++){
        if( prime[i]==i ){
            numprime++;
            for(int j=i+i; j<=n; j=j+i){
                prime[j]=INF;
            }
        }
    }
    sort(prime, prime+numprime);
 
    int i=2;
    while(tmp!=1){
        while(tmp%prime[i]==0){
            tmp/=prime[i];
            cout<<prime[i]<<'\n';
        }
        i++;
    }
    return 0;
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int n;
int main(){
    cin>>n;
    int tmp = n;
    
    for(int i=2; i<=n; i++){
        while(tmp%i==0){
            tmp/=i;
            cout<<i<<'\n';
        }
    }
    return 0;
}
cs

##

첫 코드는 에라토스테네스의 체를 이용한 코드이다. 200ms정도의 수행시간을 보였다.

두 번째 코드는 2부터 n까지 단순히 나누어떨어지지않을때까지 나눠서 n을 1로 만드는 방식이다. 약 32ms의 수행시간을 보였다.

'BOJ' 카테고리의 다른 글

BOJ 2981번 :: 검문  (0) 2019.12.22
BOJ 10217번 :: KCM Travel  (0) 2019.12.21
BOJ 11404번 :: 플로이드  (0) 2019.12.20
BOJ 1541번 :: 잃어버린 괄호  (0) 2019.12.20
BOJ 1865번 :: 웜홀  (0) 2019.12.19

+ Recent posts