Somewhere you have to start using a new language. I found it pretty frustrating to invent example code. You can cut corners or be negligent easily. That's why I really love Project Euler. I solved problems here already using many languages: PHP, C, Ruby, Python and Haskell.

It's really either for beginning something or math nerds :) Solving problems I was curious how much of Go's specialties I can use at the beginning. Fortunately there was some, such as the multiple return arguments, or simple variable definition, the dynamic type assignment - or anonym function, as much as it's a specialty, though.

The compiler was pretty helpful telling me where the problems are and what are they. Sublime has Go syntax highlighter so that was my choice of editor.

As a Sunday night bedtime story here you are my first three solutions.

### #1

*If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.*

Find the sum of all the multiples of 3 or 5 below 1000.

Find the sum of all the multiples of 3 or 5 below 1000.

package main import "fmt" func main() { sum := 0 for i := 3; i < 1000; i++ { if i % 3 == 0 || i % 5 == 0 { sum += i } } fmt.Println(sum) }

### #2

*Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:*

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

package main import "fmt" func main() { var sum, prev, current uint32 = 0, 0, 1 micfib := func(prev, current uint32) (uint32, uint32) { return current, current + prev } for current < 4e6 { prev, current = micfib(prev, current) if current % 2 == 0 { sum += current } } fmt.Println(sum) }

### #3

*The prime factors of 13195 are 5, 7, 13 and 29.*

What is the largest prime factor of the number 600851475143 ?

What is the largest prime factor of the number 600851475143 ?

package main import "fmt" func main() { var div, max uint64 = 2, 600851475143 for div < max { if max % div == 0 { max /= div div = 2 } else { div++ } } fmt.Println(div) }

---

This weekend I had almost zero time to care about my topics. I really hope soon I'll find some time to dig deeper into Go. I kinda like it, to be honest.

Peter

## No comments:

## Post a Comment