PRIMESIEVE(1)

πŸ’– PRIMESIEVE(1) β€” the primesieve page, bestie edition πŸ’–

okay so this is the manual for primesieve, and yes it's giving "math but make it fashion" β€” it generates prime numbers, and it does it fast. Buckle up πŸŽ€


✨ NAME ✨

primesieve β€” generate prime numbers, that's the whole job, and it ate πŸ’…


🌸 SYNOPSIS 🌸

primesieve [START] STOP [OPTION]...

πŸ¦‹ DESCRIPTION πŸ¦‹

Generate the prime numbers and/or prime k-tuplets inside [START, STOP] (< 2^64) using the segmented sieve of Eratosthenes. Not me explaining ancient Greek math at a sleepover β€” but fr fr, it works.

primesieve includes a number of extensions to the sieve of Eratosthenes which significantly improve performance, and honestly? obsessed:

  • multiples of small primes are pre-sieved
  • it uses wheel factorization to skip multiples with small prime factors
  • it uses the bucket sieve algorithm, which improves cache efficiency when sieving > 2^32

primesieve is also multi-threaded β€” it uses all available CPU cores by default for counting primes and for finding the nth prime. main character energy, it refuses to use just one core 😭

The segmented sieve of Eratosthenes has a runtime complexity of O(n log log n) operations and it uses O(n^(1/2)) bits of memory. More specifically primesieve uses 8 bytes per sieving prime, hence its memory usage can be approximated by PrimePi(n^(1/2)) * 8 bytes (per thread). Write that down, it's lowkey important πŸ“


πŸ’… OPTIONS πŸ’…

  • -c[NUM+], --count[=NUM+] β€” Count primes and/or prime k-tuplets, 1 <= NUM <= 6. Count primes: -c or --count, count twin primes: -c2 or --count=2, count prime triplets: -c3 or --count=3, ... You can also count primes and prime k-tuplets at the same time, e.g. -c123 counts primes, twin primes and prime triplets. multi-tasking queen πŸ‘‘
  • --cpu-info β€” Print CPU information: CPU name, frequency, number of cores, cache sizes, ... yes it's snooping on your hardware, but respectfully πŸ•΅οΈβ€β™€οΈ
  • -d, --dist=DIST β€” Sieve the interval [START, START + DIST]. distance = the vibe check of where to stop ✨
  • -h, --help β€” Print this help menu. the classic "help me help you" 🫢
  • -n, --nth-prime β€” Find the nth prime, e.g. 100 -n finds the 100th prime. If 2 numbers N START are provided finds the nth prime > START, e.g. 2 100 -n finds the 2nd prime > 100. it's giving "which one? THAT one" πŸ”₯
  • --no-status β€” Turn off the progressing status. no progress bar, no commentary, just silence 🀫
  • -p[NUM], --print[=NUM] β€” Print primes or prime k-tuplets, 1 <= NUM <= 6. Print primes: -p, print twin primes: -p2, print prime triplets: -p3, ... the printer go brrr mode πŸ–¨οΈ
  • -q, --quiet β€” Quiet mode, prints less output. introvert mode activated πŸ™ˆ
  • -R, --RiemannR β€” Approximate PrimePi(x) using the Riemann R function: R(x). approximation slay, no cap ✨
  • --RiemannR-inverse β€” Approximate the nth prime using the inverse Riemann R function: R^-1(x). the remix version of the last one πŸ’œ
  • -s, --size=SIZE β€” Set the size of the sieve array in KiB, 16 <= SIZE <= 8192. By default primesieve uses a sieve size that matches your CPU's L1 cache size (per core) or is slightly smaller than your CPU's L2 cache size. This setting is crucial for performance β€” on exotic CPUs primesieve sometimes fails to determine the CPU's cache sizes which usually causes a big slowdown. In this case you can get a significant speedup by manually setting the sieve size to your CPU's L1 or L2 cache size (per core). it's literally measuring your cache, respect the hustle πŸ“
  • -S, --stress-test[=MODE] β€” Run a stress test. The MODE can be either CPU (default) or RAM. The CPU MODE uses little memory (< 5 MiB per thread) and puts the highest load on the CPU. The RAM MODE on the other hand uses much more memory than the CPU MODE (each thread uses about 1.16 GiB), but the CPU usually won't get as hot as in the CPU MODE. Stress testing keeps on running until either a miscalculation occurs (due to a hardware issue) or the timeout expires. The default timeout is 24 hours, the timeout can be changed using the --timeout=SECS option. By default the stress test uses a number of threads that matches the number of CPU cores, the number of threads can be changed using the --threads=NUM option. πŸ”₯ it's a workout for your computer, hydrate your CPU bestie πŸ”₯
  • --test β€” Run various correctness tests (< 1 minute). quick little quiz, you got this πŸŽ€
  • -t, --threads=NUM β€” Set the number of threads, 1 <= NUM <= CPU cores. By default primesieve uses all available CPU cores for counting primes and for finding the nth prime. invite the whole friend group 🫢
  • --time β€” Print the time elapsed in seconds. clock it ⏱️
  • --timeout=SECS β€” Set the stress test timeout in seconds. Units of time for seconds, minutes, hours, days and years are also supported with the suffix s, m, h, d or y. E.g. --timeout 10m sets a timeout of 10 minutes. The default stress test timeout is 24 hours. so many ways to say "we're done here" βŒ›
  • -v, --version β€” Print version and license information. the receipts, the paperwork, the whole legal moment πŸ“œ

🌈 EXAMPLES 🌈

  • primesieve 1000 β€” Count the primes <= 1000. baby's first prime count πŸ“
  • primesieve 1e6 --print β€” Print the primes <= 10^6. a million primes, no big deal πŸ’…
  • primesieve 1e6 --print > primes.txt β€” Store the primes <= 10^6 in a text file. save it for later, bestie πŸ’Ύ
  • primesieve 2^32 --print=2 β€” Print the twin primes <= 2^32. twins! iconic duo energy πŸ‘―β€β™€οΈ
  • primesieve 1e16 --dist=1e10 --threads=1 β€” Count the primes inside [10^16, 10^16 + 10^10] using a single thread. solo mission, single-threaded queen πŸ‘‘

🧚 HOMEPAGE 🧚

https://github.com/kimwalisch/primesieve

go follow the repo, it's giving star-worthy ⭐


πŸ‘‘ AUTHOR πŸ‘‘

Kim Walisch <kim.walisch@gmail.com> β€” legend behaviour, honestly πŸ™Œ


ok that's the whole page, you read it all, I'm so proud πŸ˜­πŸ’– now go count some primes and remember: the sieve is segmented, the vibes are immaculate.

signed, sealed, delivered by your fave β€” page dated 02/17/2024, part of the primesieve 1 ✨ see you in the man pages, bestie πŸŽ€

πŸ“¦ where this page comes from