Skip to content

Instantly share code, notes, and snippets.

@kristopherjohnson
Last active January 2, 2016 18:16
Show Gist options
  • Select an option

  • Save kristopherjohnson/e205cdbe1a7941ec8425 to your computer and use it in GitHub Desktop.

Select an option

Save kristopherjohnson/e205cdbe1a7941ec8425 to your computer and use it in GitHub Desktop.
Find prime factors of a number
import Foundation
/// Given a positive integer, find its prime factors.
///
/// - parameter number: The number to be factored.
///
/// - returns: Array of factors.
///
/// - TODO: Use a less-naive algorithm. Construct the result lazily.
func primeFactorsOf(number: Int) -> [Int] {
if number < 4 {
return [number]
}
let lim = Int(sqrt(Double(number)))
for x in 2...lim {
if number % x == 0 {
var result = [x]
result.appendContentsOf(primeFactorsOf(number / x))
return result
}
}
return [number]
}
let f_2 = primeFactorsOf(2) // [2]
let f_4 = primeFactorsOf(4) // [2, 2]
let f_6 = primeFactorsOf(6) // [2, 3]
let f_12 = primeFactorsOf(12) // [2, 2, 3]
let f_100 = primeFactorsOf(100) // [2, 2, 5, 5]
let f_113 = primeFactorsOf(113) // [113]
let f_1967 = primeFactorsOf(1967) // [7, 281]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment