fork(1) download
  1. #include <stdio.h>
  2.  
  3. #define N 30
  4.  
  5. int p[N] = {2}, m[N] = {2}, k = 1;
  6.  
  7. static int isprim(int x) {
  8. int mk = m[k];
  9. if (x == mk * mk) {
  10. m[k++] = x;
  11. return 0;
  12. }
  13.  
  14. for (int i = 1; i < k; ++i) {
  15. int mi = m[i];
  16. while (mi < x)
  17. mi += 2 * p[i];
  18. m[i] = mi;
  19. if (x == mi)
  20. return 0;
  21. }
  22.  
  23. return 1;
  24. }
  25.  
  26. void genprim(void) {
  27. for (int i = 1, j = 3; i < N; ++i, j += 2)
  28. if (isprim(j))
  29. p[i] = j;
  30. }
  31.  
  32. int main(void) {
  33. genprim();
  34. for (int i = 0; i < N; ++i) {
  35. printf("%d ", p[i]);
  36. }
  37. puts("\n");
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 4508KB
stdin
Standard input is empty
stdout
2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59