diff --git a/README.md b/README.md index 091e964..c0d30a8 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ My solutions for Project Euler problems | Problem | Title | Solution| |---------|-------|---------| |1|[Multiples of 3 and 5](https://projecteuler.net/problem=1)|[Python](./python/problem-001.py), [Java](./java/problem-1.java), [Go](./go/problem-001/problem-001.go)| -|2|[Even Fibonacci Numbers](https://projecteuler.net/problem=2)|[Python](./python/problem-002.py), [Java](./java/problem-2.java)| -|3|[Largest Prime Factor](https://projecteuler.net/problem=3)|[Python](./python/problem-003.py), [Java](./java/problem-3.java)| +|2|[Even Fibonacci Numbers](https://projecteuler.net/problem=2)|[Python](./python/problem-002.py), [Java](./java/problem-2.java), [Go](./go/problem-002/problem-002.go)| +|3|[Largest Prime Factor](https://projecteuler.net/problem=3)|[Python](./python/problem-003.py), [Java](./java/problem-3.java), [Go](./go/problem-003/problem-003.go)| |4|[Largest Palindrome Product](https://projecteuler.net/problem=4)|[Python](./python/problem-004.py), [Java](./java/problem-4.java)| |5|[Smallest Multiple](https://projecteuler.net/problem=5)|[Python](./python/problem-005/py), [Java](./java/problem-5.java)| |6|[Sum Square Difference](https://projecteuler.net/problem=6)|[Python](./python/problem-006.py), [Java](./java/problem-6.java)| diff --git a/go/problem-002/problem-002.go b/go/problem-002/problem-002.go new file mode 100644 index 0000000..1e24b62 --- /dev/null +++ b/go/problem-002/problem-002.go @@ -0,0 +1,19 @@ +package main + +import "fmt" + +func main() { + curr := 1 + prev := 1 + sumValues := 0 + + for curr <= 4000000 { + if curr%2 == 0 { + sumValues += curr + } + curr += prev + prev = curr - prev + } + + fmt.Printf("The sum of fibonacci numbers below 4,000,000 is %d\n", sumValues) +} diff --git a/go/problem-003/problem-003.go b/go/problem-003/problem-003.go new file mode 100644 index 0000000..9e46aaf --- /dev/null +++ b/go/problem-003/problem-003.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + "math" +) + +func isPrime(n int) bool { + if n < 2 { + return false + } else if n == 2 { + return true + } else { + for i := 2; i*i <= n; i++ { + if n%i == 0 { + return false + } + } + } + return true +} + +func main() { + startValue := int(math.Floor(math.Sqrt(600851475143))) + largestFactor := 0 + + for startValue > 0 { + if 600851475143%startValue == 0 && isPrime(startValue) { + largestFactor = int(startValue) + break + } + startValue -= 1 + } + + fmt.Printf("Largest prime factor of 600851475143 is %d\n", largestFactor) +}