Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. /*
  2. * changeset: 44:1ca29d1b828a
  3. * user: Venkatesh Srinivas <me@endeavour.zapto.org>
  4. * date: Mon Jul 04 01:18:28 2011 -0400
  5. * summary: 10better (faster sieve)
  6. */
  7.  
  8. struct seq { unsigned long *s; unsigned int i; };
  9.  
  10. void addel(struct seq *s, unsigned int l) {
  11. s->s[s->i++] = l;
  12. }
  13.  
  14. void sieveOfErat(struct seq *primes, unsigned int lim) {
  15. unsigned int i = 0;
  16. unsigned int j = 0;
  17. unsigned int pi;
  18.  
  19. addel(primes, 2);
  20. addel(primes, 3);
  21. for (i = 3; i < lim; i+=2)
  22. if (i % 6 == 1 | i % 6 == 5)
  23. addel(primes, i);
  24.  
  25. for(i = 1; i < primes->i; i++)
  26. if (pi = primes->s[i])
  27. for (j = i*i; j < primes->i; j++)
  28. if (primes->s[j] != 0)
  29. if ((primes->s[j] % pi == 0) &&
  30. (primes->s[j] != pi))
  31. primes->s[j] = 0;
  32. }
  33.  
  34. struct seq primetab;
  35.  
  36. main(argc, argv)
  37. int argc;
  38. char *argv[];
  39. {
  40. int M = 3;
  41. int n;
  42. int factors;
  43. int matched_factors;
  44. int i;
  45.  
  46. int limit = atoi(argv[1]);
  47. primetab.s = calloc(limit, sizeof(unsigned long));
  48. primetab.i = 0;
  49.  
  50. sieveOfErat(&primetab, limit);
  51.  
  52. printf("%d primes\n", primetab.i);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement