1. Robert Lowry
  2. snippets

Commits

Robert Lowry  committed 3894eba

added some go code to euler

  • Participants
  • Parent commits 74d4c8d
  • Branches default

Comments (0)

Files changed (3)

File euler/003-primefactor.go

View file
  • Ignore whitespace
+/* project euler problem 003
+ * find the largest prime factor of a composite number (600851475143) */
+
+package main
+
+import (
+	"fmt"
+)
+
+func isprime(num uint64) bool {
+	var i uint64
+
+	for i = 2; i < num; i++ {
+		if (num % i) == 0 {
+			return false
+		}
+	}
+	return true
+}
+
+func greatestprimefactor (num uint64) uint64 {
+	var i uint64
+
+	if isprime(num) {
+		return num;
+	}
+
+	for i = 2; i <= num; i++ {
+		if (num % i) == 0 && isprime(num/i) {
+			return (num/i)
+		}
+	}
+
+	return 0
+}
+
+func main() {
+	var num uint64 = 600851475143;
+	var result uint64;
+
+	result = greatestprimefactor(num)
+	if result > 0 {
+		fmt.Printf("%v\n",result)
+	} else {
+		fmt.Printf("no prime factors found\n")
+	}
+}

File euler/008-digitsum.go

View file
  • Ignore whitespace
+/* project euler problem 008
+ * discover the largest product of five consecutive digits in a
+ * 1000-digit number.
+ */
+
+package main
+
+import (
+	"fmt"
+	//"container/list"
+	"os"
+)
+
+func readDigits(ch chan int, f *os.File) {
+	var buf [512]byte
+
+	for {
+		switch nr, er := f.Read(buf[:]); true {
+		case nr < 0:
+			fmt.Fprintf(os.Stderr, "error: reading file: %s\n", er.String())
+			os.Exit(1)
+		case nr == 0:
+			ch <- -1
+			return
+		case nr > 0:
+			for i := 0; i < nr; i++ {
+				var b byte = buf[i]
+				if('0' <= b && b <= '9') {
+					ch <- int(b - '0')
+				} else if (b != ' ' && b != '\r'&& b != '\n' && b != '\t') {
+					fmt.Fprintf(os.Stderr, "error: invalid input\n")
+					os.Exit(1)
+				}
+			}
+		}
+	}
+}
+
+func main() {
+	ch := make(chan int)
+	go readDigits(ch, os.Stdin)
+	for i := 0; i < 1000; i++ {
+		num := <-ch
+		if num < 0 {
+			break
+		}
+		fmt.Println(num)
+	}
+}

File euler/008.dat

View file
  • Ignore whitespace
+73167176531330624919225119674426574742355349194934
+96983520312774506326239578318016984801869478851843
+85861560789112949495459501737958331952853208805511
+12540698747158523863050715693290963295227443043557
+66896648950445244523161731856403098711121722383113
+62229893423380308135336276614282806444486645238749
+30358907296290491560440772390713810515859307960866
+70172427121883998797908792274921901699720888093776
+65727333001053367881220235421809751254540594752243
+52584907711670556013604839586446706324415722155397
+53697817977846174064955149290862569321978468622482
+83972241375657056057490261407972968652414535100474
+82166370484403199890008895243450658541227588666881
+16427171479924442928230863465674813919123162824586
+17866458359124566529476545682848912883142607690042
+24219022671055626321111109370544217506941658960408
+07198403850962455444362981230987879927244284909188
+84580156166097919133875499200524063689912560717606
+05886116467109405077541002256983155200055935729725
+71636269561882670428252483600823257530420752963450