Skip to content

Instantly share code, notes, and snippets.

@mattt
Last active January 27, 2019 20:35
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mattt/d725a54f9b5aa6a3eaa425f4e1f18f78 to your computer and use it in GitHub Desktop.
Save mattt/d725a54f9b5aa6a3eaa425f4e1f18f78 to your computer and use it in GitHub Desktop.
Sieve of Eratosthenes with Accelerate
// Calculate prime numbers in a given range
// using Sieve of Eratosthenes
import Accelerate
var primes: [Int] = []
let range = 0...999
var numbers = range.map(Float.init)
for n in range.dropLast() {
guard numbers[n] > 1 else { continue }
defer { primes.append(n) }
// Clear vector elements with given stride
// (i.e. set value to 0)
vDSP_vclr(&numbers,
numericCast(n),
numericCast(numbers.count / n))
}
print(primes)
@willie
Copy link

willie commented Oct 15, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment