Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
61
Task/Twin-primes/Go/twin-primes-1.go
Normal file
61
Task/Twin-primes/Go/twin-primes-1.go
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func sieve(limit uint64) []bool {
|
||||
limit++
|
||||
// True denotes composite, false denotes prime.
|
||||
c := make([]bool, limit) // all false by default
|
||||
c[0] = true
|
||||
c[1] = true
|
||||
// no need to bother with even numbers over 2 for this task
|
||||
p := uint64(3) // Start from 3.
|
||||
for {
|
||||
p2 := p * p
|
||||
if p2 >= limit {
|
||||
break
|
||||
}
|
||||
for i := p2; i < limit; i += 2 * p {
|
||||
c[i] = true
|
||||
}
|
||||
for {
|
||||
p += 2
|
||||
if !c[p] {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
func commatize(n int) string {
|
||||
s := fmt.Sprintf("%d", n)
|
||||
if n < 0 {
|
||||
s = s[1:]
|
||||
}
|
||||
le := len(s)
|
||||
for i := le - 3; i >= 1; i -= 3 {
|
||||
s = s[0:i] + "," + s[i:]
|
||||
}
|
||||
if n >= 0 {
|
||||
return s
|
||||
}
|
||||
return "-" + s
|
||||
}
|
||||
|
||||
func main() {
|
||||
c := sieve(1e10 - 1)
|
||||
limit := 10
|
||||
start := 3
|
||||
twins := 0
|
||||
for i := 1; i < 11; i++ {
|
||||
for i := start; i < limit; i += 2 {
|
||||
if !c[i] && !c[i-2] {
|
||||
twins++
|
||||
}
|
||||
}
|
||||
fmt.Printf("Under %14s there are %10s pairs of twin primes.\n", commatize(limit), commatize(twins))
|
||||
start = limit + 1
|
||||
limit *= 10
|
||||
}
|
||||
}
|
||||
29
Task/Twin-primes/Go/twin-primes-2.go
Normal file
29
Task/Twin-primes/Go/twin-primes-2.go
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/jbarham/primegen.go"
|
||||
)
|
||||
|
||||
func main() {
|
||||
p := primegen.New()
|
||||
count := 0
|
||||
previous := uint64(0)
|
||||
power := 1
|
||||
limit := uint64(10)
|
||||
for {
|
||||
prime := p.Next()
|
||||
if prime >= limit {
|
||||
fmt.Printf("Number of twin prime pairs less than %d: %d\n", limit, count)
|
||||
power++
|
||||
if power > 10 {
|
||||
break
|
||||
}
|
||||
limit *= 10
|
||||
}
|
||||
if previous > 0 && prime == previous + 2 {
|
||||
count++
|
||||
}
|
||||
previous = prime
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue