JavaScript
JavaScript copied to clipboard
Optimize sieveOfEratosthenes: reduced memory usage and iterations
- 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
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_NOin 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*iand 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]
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.