JavaScript icon indicating copy to clipboard operation
JavaScript copied to clipboard

Optimize sieveOfEratosthenes: reduced memory usage and iterations

Open Sumit210106 opened this issue 3 months ago • 1 comments

  • Mark only odd multiples starting from i² to reduce iterations
  • Collect primes after marking to avoid duplicates and simplify logic
  • Explicitly include 2 and skip even numbers throughout

Open in Gitpod know more

Describe your change:

  • [x] Optimize an existing algorithm (sieveOfEratosthenes)

Checklist:

  • [x] I have read CONTRIBUTING.md.
  • [x] This pull request is all my own work -- I have not plagiarized.
  • [x] I know that pull requests will not be merged if they fail the automated tests.
  • [x] This PR only changes one algorithm file (sieveOfEratosthenes.js).
  • [x] All filenames follow UpperCamelCase (PascalCase) style.
  • [x] The algorithm has a URL in its comments pointing to Wikipedia.
  • [ ] (Optional) If this PR fixes an open issue, I have added Fixes: #ISSUE_NO in the commit message.

Summary of Improvements

  • Reduced memory usage by ~50% by skipping even numbers (except 2).
  • Reduced number of iterations:
    • Outer loop increments by 2 (odd-only).
    • Inner loop starts from i*i and marks only odd multiples (j += 2*i).
  • Same time complexity O(n log log n) but with a smaller constant factor → faster in practice.
  • Added clearer inline comments in the code for maintainability.

Example

sieveOfEratosthenes(20)
// Output: [2, 3, 5, 7, 11, 13, 17, 19]

Sumit210106 avatar Oct 01 '25 20:10 Sumit210106

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 85.92%. Comparing base (08d8c6b) to head (33af5aa).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1813   +/-   ##
=======================================
  Coverage   85.91%   85.92%           
=======================================
  Files         379      379           
  Lines       19778    19789   +11     
  Branches     3015     3022    +7     
=======================================
+ Hits        16993    17004   +11     
  Misses       2785     2785           

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov-commenter avatar Oct 01 '25 20:10 codecov-commenter