Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m6s
17 lines
674 B
APL
17 lines
674 B
APL
⍝ Sieve of Eratosthenes — the classic APL one-liner
|
||
⍝ primes ← (2=+⌿0=A∘.|A)/A←⍳N
|
||
⍝
|
||
⍝ Read right-to-left:
|
||
⍝ A ← ⍳N : A is 1..N
|
||
⍝ A∘.|A : outer-product residue table — M[i,j] = A[j] mod A[i]
|
||
⍝ 0=... : boolean — true where A[i] divides A[j]
|
||
⍝ +⌿... : column sums — count of divisors per A[j]
|
||
⍝ 2=... : true for numbers with exactly 2 divisors (1 and self) → primes
|
||
⍝ .../A : compress — select A[j] where mask[j] is true
|
||
⍝
|
||
⍝ Examples:
|
||
⍝ primes 10 → 2 3 5 7
|
||
⍝ primes 30 → 2 3 5 7 11 13 17 19 23 29
|
||
|
||
primes ← {(2=+⌿0=⍵∘.|⍵)/⍵←⍳⍵}
|