{{{ #include using namespace std; const int scope = 2000; void SetScope(int scope[], int length); void CalculatePrimeNumber(int scope[], int length); void PrintPrimeNumber(int scope[], int lengh); // this program print prime number in scope 1 to 2000 int main(void) { int targetNumberScope[scope + 1]; SetScope(targetNumberScope, scope); CalculatePrimeNumber(targetNumberScope, scope); PrintPrimeNumber(targetNumberScope, scope); exit(EXIT_SUCCESS); } void SetScope(int scope[], int length) { for (int i = 0; i < length; i++) scope[i] = true; } void CalculatePrimeNumber(int scope[], int length) { for (int masterIter = 2; masterIter < length; masterIter++) { if (scope[masterIter]) { for (int i = 2, secondIter = masterIter * i; secondIter < length; secondIter = masterIter * ++i) { if (scope[secondIter]) scope[secondIter] = false; } } } } void PrintPrimeNumber(int scope[], int length) { for (int i = 1; i < length; i++) { if (scope[i]) cout << i << " | "; } } }}} Java 로 연습 {{{ public class PrimeNumberTest { static final int SCOPE = 2000; private static boolean numberPool[]; private static void InitializeNumberPool() { numberPool = new boolean[SCOPE + 1]; for (int i = 0; i <= SCOPE; i++) numberPool[i] = true; } private static void CalculatePrimeNumber() { for (int i = 2; i <= SCOPE; i++) { if (numberPool[i]) for (int j = i, k = 2; j * k <= SCOPE; k++) numberPool[j * k] = false; } } private static void PrintResult() { for (int i = 1; i <= SCOPE; i++) if (numberPool[i]) System.out.print(i + " -> "); } public static void main(String[] args) { InitializeNumberPool(); CalculatePrimeNumber(); PrintResult(); } } }}} 세번째는 OOP 로 도전 예정..