본문 바로가기

Programming/데일리 알고리즘

190719_소수구하기_C

에라토스테네스의 체를 사용할 때와 아닐 때, 시간 복잡도를 비교해보았다.

무려 소요 시간이 10배 차이가 난다. (2번의 코드 길이가 더 긴 이유는 1번을 주석 처리해서이다.)

 

1. 제곱근을 사용해서 풀었을 때

2. 에라토스테네스의 체를 사용해서 풀었을 때

#include <stdio.h>

int main(void) {

    int m;
    int n;
    scanf("%d %d", &m, &n);

    //에라토스테네스의 체
    int arrange = n-m+1;
    int notSosu[1000000] = {0,};

    notSosu[1] = 1;
    for ( int i=2; i<=n; i++ ) {
        if ( notSosu[i] == 0 ) {
            for ( int j=i; j<=n; j+=i ) {
                if ( i != j ) {
                    notSosu[j] = 1;
                }
            }
        }
    }

    for ( int i=m; i<=n; i++ ) {
        if ( notSosu[i] == 0 ) {
            printf("%d\n", i);
        }
    }
    
    return 0;
 }

'Programming > 데일리 알고리즘' 카테고리의 다른 글

(210409:BTB) Lesson 1. BinaryGap  (0) 2021.04.09
190725_덩치(7568)_C  (0) 2019.07.25
190713_ACM호텔_C  (0) 2019.07.13
190712_카잉 달력_C  (0) 2019.07.12
190710 - C 문법  (0) 2019.07.10