Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,36 @@
|
|||
primes = () ->
|
||||
yield 2
|
||||
yield 3
|
||||
|
||||
sieve = ([] for i in [1..3])
|
||||
sieve[0].push 3
|
||||
[r, s] = [3, 9]
|
||||
pos = 1
|
||||
n = 5
|
||||
loop
|
||||
isPrime = true
|
||||
if sieve[pos].length > 0 # this entry has a list of factors
|
||||
isPrime = false
|
||||
sieve[(pos + m) % sieve.length].push m for m in sieve[pos]
|
||||
sieve[pos] = []
|
||||
|
||||
if n is s # n is the next square
|
||||
if isPrime
|
||||
isPrime = false # r divides n, so not actually prime
|
||||
sieve[(pos + r) % sieve.length].push r # however, r is prime
|
||||
r += 2
|
||||
s = r*r
|
||||
|
||||
yield n if isPrime
|
||||
n += 2
|
||||
pos += 1
|
||||
if pos is sieve.length
|
||||
sieve.push [] # array size must exceed largest prime found
|
||||
sieve.push [] # adding two entries keeps size = O(sqrt n)
|
||||
pos = 0
|
||||
|
||||
undefined # prevent CoffeeScript from aggregating values
|
||||
|
||||
module.exports = {
|
||||
primes
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
primes = require('sieve').primes
|
||||
|
||||
gen = primes()
|
||||
console.log "The first 20 primes: #{gen.next().value for _ in [1..20]}"
|
||||
|
||||
p100_150 = (while (p = gen.next().value) < 150 then p).filter (n) -> n > 100
|
||||
console.log "The primes between 100 and 150: #{p100_150}"
|
||||
|
||||
while gen.next().value < 7700
|
||||
undefined
|
||||
count = 1
|
||||
while gen.next().value < 8000
|
||||
++count
|
||||
|
||||
console.log "There are #{count} primes between 7,700 and 8,000."
|
||||
|
||||
n = 10
|
||||
c = 0
|
||||
gen = primes()
|
||||
loop
|
||||
p = gen.next().value
|
||||
c += 1
|
||||
if c is n
|
||||
console.log "The #{n}th prime is #{p}"
|
||||
break if n is 10_000_000
|
||||
n *= 10
|
||||
Loading…
Add table
Add a link
Reference in a new issue