# Visual Studio 2019
# 1부터 n까지의 수 중 소수를 전부 출력하는 프로그램이다
# 에라토스테네스의 체(Sieve of Eratosthenes)란?
수학자 에라토스테네스가 만든 소수 판별법. 체(sieve)로 치듯이 수를 걸러낸다는 것에서 착안
# 에라토스테네스 체 알고리즘
- 1부터 n까지의 표를 만들고 (=> 배열) 1을 제외한다 (*1은 소수가 아님)
- 제외되지 않은 가장 작은 수를 취하고 그 수의 배수는 제외한다
- 2의 과정을 표 전체에 반복한다
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int n;
int arr[100000] = { 0 };
scanf("%d", &n);
for (int i = 0;i <= n;i++) {
arr[i] = i;
}
for (int i = 2; i <= n;i++) {
if (arr[i] != 0) {
for (int j = 2 * i;j <= n;j += i) {
arr[j] = 0;
}
}
}
for (int i = 2;i <= n;i++) {
if (arr[i] != 0) {
printf("%d\n", arr[i]);
}
}
getchar();
return 0;
}
# 프로그램 설명
- n을 입력받는다
- 0부터 n까지의 arr [n]=n가 되는 배열을 만든다
- arr [2] 일 때부터 n만큼 반복문을 실행하며, 이중 for문을 이용해 n의 배수 배열에는 0을 넣는다
(* 이미 합성수로 검증된 수의 배수는 검증하지 않는다) - 0이 들어있는 배열(합성수)을 제외한 arr [n](소수)을 출력한다
'Programming Language > C, Algorithms' 카테고리의 다른 글
BST 구현 C++ (0) | 2022.11.06 |
---|---|
[C++] 유클리드 호제법 이용, 최대공약수 최소공배수 구하기 (0) | 2022.04.17 |
[C++] 윤년 계산 및 윤년 목록 출력 (0) | 2022.04.17 |
[C/C++] 선형방정식의 정수해 구하기 (1) (0) | 2020.04.24 |