Sexy primes: Difference between revisions

Content added Content deleted
m (→‎{{header|Perl 6}}: bleh. fix whitespace)
(→‎{{header|Go}}: Revised version in line with change in task requirements. Other changes to make code more general and printing more concise.)
Line 88:
import "fmt"
 
func sieve(limit uint64int) []bool {
limit++
// True denotes composite, false denotes prime.
Line 95:
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
Line 129:
}
 
func minOfprintHelper(acat string, ble, lim, max int) (int, int, string) {
cle, clim := commatize(le), commatize(lim)
if a < b {
if cat != "unsexy returnprimes" a{
cat = "sexy prime " + cat
}
fmt.Printf("Number of %s less than %s = %s\n", cat, clim, cle)
return b
last := max
if ale < blast {
last = le
}
verb := "are"
if last == 1 {
verb = "is"
}
return ble, last, verb
}
 
func main() {
//lim sieve:= up to 1 million1000035
sv := sieve(1e6lim - 1)
var pairs [][2]int
var trips [][3]int
Line 144 ⟶ 154:
var quins [][5]int
var unsexy = []int{2, 3}
for i := 3; i < 1e6lim; i += 2 {
if i > 5 && i < 999994lim-6 && !sv[i] && sv[i-6] && sv[i+6] {
unsexy = append(unsexy, i)
continue
}
if i < 999994lim-6 && !sv[i] && !sv[i+6] {
pair := [2]int{i, i + 6}
pairs = append(pairs, pair)
Line 155 ⟶ 165:
continue
}
if i < 999988lim-12 && !sv[i+12] {
trip := [3]int{i, i + 6, i + 12}
trips = append(trips, trip)
Line 161 ⟶ 171:
continue
}
if i < 999982lim-18 && !sv[i+18] {
quad := [4]int{i, i + 6, i + 12, i + 18}
quads = append(quads, quad)
Line 167 ⟶ 177:
continue
}
if i < 999976lim-24 && !sv[i+24] {
quin := [5]int{i, i + 6, i + 12, i + 18, i + 24}
quins = append(quins, quin)
}
}
le, n, verb := printHelper("pairs", len(pairs), lim, 5)
fmt.PrintlnPrintf("NumberThe oflast sexy%d prime%s:\n pairs less%v\n\n", than 1n,000,000 ="verb, commatize(pairs[le)-n:])
n := minOf(le, 5)
fmt.Println("The last", n, "is/are:\n ", pairs[le-n:], "\n")
 
le, n, verb = printHelper("triplets", len(trips), lim, 5)
fmt.PrintlnPrintf("NumberThe oflast sexy%d prime%s:\n triplets less%v\n\n", than 1n,000,000 ="verb, commatize(trips[le)-n:])
n = minOf(le, 5)
fmt.Println("The last", n, "is/are:\n ", trips[le-n:], "\n")
 
le, n, verb = printHelper("quadruplets", len(quads), lim, 5)
fmt.PrintlnPrintf("NumberThe oflast sexy%d prime%s:\n quadruplets less%v\n\n", than 1n,000,000 ="verb, commatize(quads[le)-n:])
n = minOf(le, 5)
fmt.Println("The last", n, "is/are:\n ", quads[le-n:], "\n")
 
le, n, verb = printHelper("quintuplets", len(quins), lim, 5)
fmt.PrintlnPrintf("NumberThe oflast sexy%d prime%s:\n quintuplets less%v\n\n", than 1n,000,000 ="verb, commatize(quins[le)-n:])
n = minOf(le, 5)
fmt.Println("The last", n, "is/are:\n ", quins[le-n:], "\n")
 
le, n, verb = printHelper("unsexy primes", len(unsexy), lim, 10)
fmt.PrintlnPrintf("NumberThe oflast unsexy%d primes%s:\n less than%v\n\n", 1n,000,000 ="verb, commatize(unsexy[le)-n:])
n = minOf(le, 10)
fmt.Println("The last", n, "is/are:\n ", unsexy[le-n:])
}</lang>
 
{{out}}
<pre>
Number of sexy prime pairs less than 1,000,000035 = 16,386
The last 5 is/are:
[[999371 999377] [999431 999437] [999721 999727] [999763 999769] [999953 999959]]
 
Number of sexy prime triplets less than 1,000,000035 = 2,900
The last 5 is/are:
[[997427 997433 997439] [997541 997547 997553] [998071 998077 998083] [998617 998623 998629] [998737 998743 998749]]
 
Number of sexy prime quadruplets less than 1,000,000035 = 325
The last 5 is/are:
[[977351 977357 977363 977369] [983771 983777 983783 983789] [986131 986137 986143 986149] [990371 990377 990383 990389] [997091 997097 997103 997109]]
 
Number of sexy prime quintuplets less than 1,000,000035 = 1
The last 1 is/are:
[[5 11 17 23 29]]
 
Number of unsexy primes less than 1,000,000035 = 48,626627
The last 10 is/are:
[999809 999853 999863 999883 999907 999917 999931 999961 999979 999983 1000003]
</pre>