Skip to content

Instantly share code, notes, and snippets.

@ScotterC
Last active December 18, 2015 22:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ScotterC/5857944 to your computer and use it in GitHub Desktop.
Save ScotterC/5857944 to your computer and use it in GitHub Desktop.
Largest Prime factor of 1e12 number
// Works for 13195 and larger numbers like 901234567 but fails when I add a digit let alone for 600851475143.
// The prime factors of 13195 are 5, 7, 13 and 29
// What is the largest prime factor of the number 600851475143
package main
import (
"fmt"
)
func main() {
var (
i int64
target int64
)
i = 2
target = 901234567 // 600851475143 // 13195
primes := make([]int64, 0)
for i < target {
if isFactor(target, i) {
if isPrime(i) {
primes = append(primes, i)
}
}
i += 1
}
fmt.Printf("%d\n", primes)
largest := primes[len(primes)-1]
fmt.Printf("%d\n", largest)
}
func isFactor(target int64, possible_factor int64) (bool) {
if target % possible_factor == 0 {
return true
} else {
return false
}
}
func isPrime(target int64) (bool) {
if target == 1 {
return false
}
prime := true
var i int64
i = 2
for i < target {
if isFactor(target, i) {
prime = false
break
}
i += 1
}
return prime
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment