/* 에라토스텔레스의 체 (Eratosthenes's sieve) */
#include <stdio.h>
#include <alloc.h>
#include <stdlib.h>
#define MAX 10
void main(void)
{
int* iptr;
int i, j;
iptr = (int*)calloc(MAX,sizeof(int)); // 메모리 할당 초기화
if(iptr == NULL) // 메모리 할당 실패
{
puts("\n 메모리 할당 실패!");
exit(1);
}
for(i=2;i<MAX;i++)
{
if(iptr[i] == 1) // 이미 지워진 수, 소수가 아님
continue;
j = i; // i를 기점으로 해서
while((j += i) <= MAX) // i의 배수들을 모두 지운다.
iptr[j] = 1;
}
for(i=2;i<=MAX;i++) // 소수의 출력
if(iptr[i] == 0)
printf("\t%6d",i);
}
'IT_Programming > C · C++' 카테고리의 다른 글
strcpy(), strcat(), strlen(), strcmp() 함수를 직접 만드시오 (포인터연습) (0) | 2007.01.29 |
---|---|
[ 터보 C++ ] 간단한 계산기 만들기 (0) | 2007.01.26 |
printf와 scanf에 관한 짤막한 글 (0) | 2007.01.24 |
포인터 선언과 연산 테스트 (0) | 2007.01.24 |
입력받은 수가 소수인지 아닌지를 알아보자 (0) | 2007.01.23 |