# Commits

committed 3894eba

added some go code to euler

• Participants
• Parent commits 74d4c8d
• Branches default

# File euler/003-primefactor.go

• 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

• 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

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