Skip to content

Instantly share code, notes, and snippets.

@fty4
Created December 6, 2018 12:37
Show Gist options
  • Select an option

  • Save fty4/4228ad2cd39657db7035cab4d00da92f to your computer and use it in GitHub Desktop.

Select an option

Save fty4/4228ad2cd39657db7035cab4d00da92f to your computer and use it in GitHub Desktop.
// prime factorization for n
func getPrimeFactorization(n int) ([]int) {
var primefactors []int
// check divisibility by 2,3 and all odd numbers up to n
var divider = append([]int{2}, getOddNumbers(n)...)
for _, i := range divider {
for n % i == 0 {
primefactors = append(primefactors, i)
n = n / i
}
if i > n {
break
}
}
return primefactors
}
// prime factorization numbers for n (no number double) - e.g: regular: 4 = [2 2] - here: 4 = [2]
func getPrimeFactorizationNumbers(n int) ([]int) {
var primefactors []int
// check divisibility by 2,3 and all odd numbers up to n
var divider = append([]int{2}, getOddNumbers(n)...)
for _, i := range divider {
for n % i == 0 {
if !sliceContains(primefactors, i) {
primefactors = append(primefactors, i)
}
n = n / i
}
if i > n {
break
}
}
return primefactors
}
// returns slice of every odd number to n, including 2
func getOddNumbers(n int) ([]int){
var numbers []int
for i := 3; i <= n; i = i +2 {
numbers = append(numbers, i)
}
return numbers
}
func sliceContains(s []int, e int) bool {
for _, a := range s {
if a == e {
return true
}
}
return false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment