# Sieve of Eratosthenes

ある整数以下の素数を発見するアルゴリズム

C
#include <stdio.h>

main()
{
  int n;
  printf("Type in the integer.\n");
  scanf("%d", &n);
  
  if (n<=0) {
    printf("Invalid number.\n");
    exit(1);
  }

  int i, m, n;
  int arr[n+1], prim[n+1];
  arr[0] = 0;
  
  // step 1
  arr[1] = 0;
  m = 2;
  n = 0;
  
  do {
    for (i=2*m; i<n+1; i+=m) {
      arr[i] = 0;
    }
    prim[n] = m;
    n++;
    
    do {
      m++;
    } while (arr[m] === 0 && m < n+1);  
  } while (m < n+1);
  
  for (i=0; i<n; i++) {
    printf("%3d\n", prim[i]);
  }
}