개요
입력받은 수까지 모든 소수를 구하고 출력하라. 에라토스테네스의 체의 방법 - 2의 배수를 소수에서 제외, 3의 배수를 소수에서 제외.... 즉 소수의 배수를 소수에서 제외해서 소수를 구하는 방법 |
Code
#include<stdio.h>
#include<stdlib.h>
void FindPrimeNumber(int* pArray, int index,int L_num)
{
int i = index;
while (i+index<=L_num) {
i+=index;
if (pArray[i] == 0) continue;
else pArray[i] = 0;
}
}
int main(void)
{
int* pPrime = NULL;
int iNum = 0,cnt=0;
printf("Input Num :");
scanf_s("%d", &iNum);
pPrime = (int*)malloc((unsigned)sizeof(int*) * iNum);
for (int i =2 ; i<=iNum;i++){
pPrime[0] = 1;
}
for (int i = 2; i <= iNum; i++) {
FindPrimeNumber(pPrime, i,iNum);
}
for (int i = 2; i <= iNum; i++) {
if (pPrime[i] != 0) {
printf("%3d번째 소수 : %3d\t",cnt+1,i);
if ((cnt + 1) % 5 == 0) {
printf("\n");
}
cnt++;
}
}
free(pPrime);
return 0;
}
Output
'C\C++' 카테고리의 다른 글
구조체 실습과제 01 (0) | 2022.02.23 |
---|---|
Structure Input/Output (0) | 2022.02.22 |
소수 구하기 (0) | 2022.02.17 |
Pointer & Array Ex01 (0) | 2022.02.17 |
Array & Pointer 예제 (0) | 2022.02.16 |