-
Notifications
You must be signed in to change notification settings - Fork 5
/
euler.go
74 lines (67 loc) · 1.24 KB
/
euler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"fmt";
"flag";
)
// Euler #1
// Answer: 233168
//
// 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.
func euler1() int {
var sum int;
for i := 3; i < 1000; i++ {
if i % 3 == 0 || i % 5 == 0 {
sum += i;
}
}
return sum;
}
// Euler #2:
// Answer: 4613732
//
// 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, ...
//
// Find the sum of all the even-valued terms in the sequence which do
// not exceed four million.
func euler2() int {
a := int(1);
b := int(2);
sum := 2;
for b < 4000000 {
c := a + b;
if c % 2 == 0 {
sum += c
}
a = b;
b = c
}
return sum
}
func show(n string, r int) {
fmt.Printf("%s: %d\n", n, r);
}
func main() {
flag.Parse();
if flag.NArg() <= 0 {
show("1", euler1());
show("2", euler2());
} else {
for i := 0; i < flag.NArg(); i++ {
var r int;
arg := flag.Arg(i);
switch arg {
case "1": r = euler1();
case "2": r = euler2();
default: r = -1;
}
show(arg, r);
}
}
}