# A slice of prime numbers (golang)

Another translation of one of my Python snippets. This function will return a slice of consecutive prime numbers from 2 to a given value limit. In Go the 'int' type (int32) will go as high as 2147483647, but you can replace 'int' with 'uint64' and go as high as 18446744073709551615.

846 Views

Scientist

``````// prime_slice2.go
//
// get a slice of primes from 2 to a given value limit
//
// info on numeric limits:
// https://golang.org/ref/spec#Numeric_types
// int or int32, signed 32-bit integer (-2147483648 to 2147483647)
// uint64 is unsigned 64-bit integer (0 to 18446744073709551615)
//
// online play at:
// http://play.golang.org/p/sUT0Npic9y
//
// tested with Go version 1.4.2   by vegaseat  5may2015

package main

import "fmt"

// return a slice of primes from 2 to limit (inclusive)
// uses Sieve of Eratosthenes algorithm
func primes_dns(limit int) []int {
limit = limit + 1
// creates a slice of false with length of limit
bools := make([]bool, limit)
// implies up to the sqrt of limit
for k := 2; k*k <= limit; k++ {
if bools[k] != true {
for ix := k * k; ix < limit; ix += k {
bools[ix] = true
}
}
}
// index of remaining False in bools = a prime number
primes := []int{}
for ix := 2; ix < limit; ix++ {
if bools[ix] != true {
primes = append(primes, ix)
}
}
return primes
}

func main() {
fmt.Println("A slice of prime numbers:")

prime_slice := primes_dns(67)
fmt.Printf("%v\n", prime_slice)

fmt.Println("----------------------------------------------")
fmt.Println("Let's get a larger slice of 10,000,000 primes:")
prime_slice2 := primes_dns(10000000)
size := len(prime_slice2)
fmt.Printf("There are %v primenumbers in the slice\n", size)
// use slicing to look at select portions of the slice of primes
// in Go slicing uses [start_index:end_index(exclusive)] syntax
fmt.Printf("First 10 primes: %v\n", prime_slice2[0:10])
fmt.Printf("Last 5 primes: %v\n", prime_slice2[size-5:size])
}

/*
A slice of prime numbers:
[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67]
----------------------------------------------
Let's get a larger slice of 10,000,000 primes:
There are 664579 primenumbers in the slice
First 10 primes: [2 3 5 7 11 13 17 19 23 29]
Last 5 primes: [9999937 9999943 9999971 9999973 9999991]
*/``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.19 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.