[C언어] 에라토스테네스의 체 함수
2020. 4. 11. 20:40ㆍ알고리즘/알고리즘 코드
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
|
#include <math.h> // sqrt 함수 사용을 위한 include
#define MAX_PRIME_NUMBER 100000 // 원하는 숫자로 변경 가능
unsigned int g_arrEratos[MAX_PRIME_NUMBER + 1] = {0, };
void fnEratos(unsigned int nLastElement)
{
unsigned int nEratosLastElement = (int)sqrt(nLastElement) + 1;
// 숫자 1 은 소수가 아님
g_arrEratos[1] = 1;
for(unsigned int i = 2; i <= nEratosLastElement; i++)
{
unsigned int nSecondOperand = i;
for(unsigned int nBuffer = i * 2; nBuffer <= nLastElement; nBuffer += nSecondOperand)
{
g_arrEratos[nBuffer] = 1;
}
}
}
// <사용법>
// 1. fnEratos(MAX_PRIME_NUMBER); 호출
// 2. NUMBER 가 소수인지 알고 싶다면 g_arrEratos[NUMBER] 을 판별하면 된다.
// 2.1. 0 이면 소수 O
// 2.2. 1 이면 소수 X
|
cs |
'알고리즘 > 알고리즘 코드' 카테고리의 다른 글
[C언어] 병합정렬 (Merge Sort) 소스 코드 (0) | 2020.04.12 |
---|---|
[C언어] 퀵정렬 (Quick Sort) 소스 코드 (0) | 2020.04.12 |