Sexy primes: Difference between revisions
Content deleted Content added
Thundergnat (talk | contribs) 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: | Line 88: | ||
import "fmt" |
import "fmt" |
||
func sieve(limit |
func sieve(limit int) []bool { |
||
limit++ |
limit++ |
||
// True denotes composite, false denotes prime. |
// True denotes composite, false denotes prime. |
||
Line 95: | Line 95: | ||
c[1] = true |
c[1] = true |
||
// no need to bother with even numbers over 2 for this task |
// no need to bother with even numbers over 2 for this task |
||
p := |
p := 3 // Start from 3. |
||
for { |
for { |
||
p2 := p * p |
p2 := p * p |
||
Line 129: | Line 129: | ||
} |
} |
||
func |
func printHelper(cat string, le, lim, max int) (int, int, string) { |
||
cle, clim := commatize(le), commatize(lim) |
|||
⚫ | |||
if cat != "unsexy primes" { |
|||
cat = "sexy prime " + cat |
|||
} |
} |
||
fmt.Printf("Number of %s less than %s = %s\n", cat, clim, cle) |
|||
⚫ | |||
last := max |
|||
⚫ | |||
last = le |
|||
} |
|||
verb := "are" |
|||
if last == 1 { |
|||
verb = "is" |
|||
} |
|||
⚫ | |||
} |
} |
||
func main() { |
func main() { |
||
lim := 1000035 |
|||
sv := sieve( |
sv := sieve(lim - 1) |
||
var pairs [][2]int |
var pairs [][2]int |
||
var trips [][3]int |
var trips [][3]int |
||
Line 144: | Line 154: | ||
var quins [][5]int |
var quins [][5]int |
||
var unsexy = []int{2, 3} |
var unsexy = []int{2, 3} |
||
for i := 3; i < |
for i := 3; i < lim; i += 2 { |
||
if i > 5 |
if i > 5 && i < lim-6 && !sv[i] && sv[i-6] && sv[i+6] { |
||
unsexy = append(unsexy, i) |
unsexy = append(unsexy, i) |
||
continue |
continue |
||
} |
} |
||
if i < |
if i < lim-6 && !sv[i] && !sv[i+6] { |
||
pair := [2]int{i, i + 6} |
pair := [2]int{i, i + 6} |
||
pairs = append(pairs, pair) |
pairs = append(pairs, pair) |
||
Line 155: | Line 165: | ||
continue |
continue |
||
} |
} |
||
if i < |
if i < lim-12 && !sv[i+12] { |
||
trip := [3]int{i, i + 6, i + 12} |
trip := [3]int{i, i + 6, i + 12} |
||
trips = append(trips, trip) |
trips = append(trips, trip) |
||
Line 161: | Line 171: | ||
continue |
continue |
||
} |
} |
||
if i < |
if i < lim-18 && !sv[i+18] { |
||
quad := [4]int{i, i + 6, i + 12, i + 18} |
quad := [4]int{i, i + 6, i + 12, i + 18} |
||
quads = append(quads, quad) |
quads = append(quads, quad) |
||
Line 167: | Line 177: | ||
continue |
continue |
||
} |
} |
||
if i < |
if i < lim-24 && !sv[i+24] { |
||
quin := [5]int{i, i + 6, i + 12, i + 18, i + 24} |
quin := [5]int{i, i + 6, i + 12, i + 18, i + 24} |
||
quins = append(quins, quin) |
quins = append(quins, quin) |
||
} |
} |
||
} |
} |
||
le := len(pairs) |
le, n, verb := printHelper("pairs", len(pairs), lim, 5) |
||
fmt. |
fmt.Printf("The last %d %s:\n %v\n\n", n, verb, pairs[le-n:]) |
||
n := minOf(le, 5) |
|||
fmt.Println("The last", n, "is/are:\n ", pairs[le-n:], "\n") |
|||
le = len(trips) |
le, n, verb = printHelper("triplets", len(trips), lim, 5) |
||
fmt. |
fmt.Printf("The last %d %s:\n %v\n\n", n, verb, trips[le-n:]) |
||
n = minOf(le, 5) |
|||
fmt.Println("The last", n, "is/are:\n ", trips[le-n:], "\n") |
|||
le = len(quads) |
le, n, verb = printHelper("quadruplets", len(quads), lim, 5) |
||
fmt. |
fmt.Printf("The last %d %s:\n %v\n\n", n, verb, quads[le-n:]) |
||
n = minOf(le, 5) |
|||
fmt.Println("The last", n, "is/are:\n ", quads[le-n:], "\n") |
|||
le = len(quins) |
le, n, verb = printHelper("quintuplets", len(quins), lim, 5) |
||
fmt. |
fmt.Printf("The last %d %s:\n %v\n\n", n, verb, quins[le-n:]) |
||
n = minOf(le, 5) |
|||
fmt.Println("The last", n, "is/are:\n ", quins[le-n:], "\n") |
|||
le = len(unsexy) |
le, n, verb = printHelper("unsexy primes", len(unsexy), lim, 10) |
||
fmt. |
fmt.Printf("The last %d %s:\n %v\n\n", n, verb, unsexy[le-n:]) |
||
n = minOf(le, 10) |
|||
fmt.Println("The last", n, "is/are:\n ", unsexy[le-n:]) |
|||
}</lang> |
}</lang> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Number of sexy prime pairs less than 1,000, |
Number of sexy prime pairs less than 1,000,035 = 16,386 |
||
The last 5 |
The last 5 are: |
||
[[999371 999377] [999431 999437] [999721 999727] [999763 999769] [999953 999959]] |
[[999371 999377] [999431 999437] [999721 999727] [999763 999769] [999953 999959]] |
||
Number of sexy prime triplets less than 1,000, |
Number of sexy prime triplets less than 1,000,035 = 2,900 |
||
The last 5 |
The last 5 are: |
||
[[997427 997433 997439] [997541 997547 997553] [998071 998077 998083] [998617 998623 998629] [998737 998743 998749]] |
[[997427 997433 997439] [997541 997547 997553] [998071 998077 998083] [998617 998623 998629] [998737 998743 998749]] |
||
Number of sexy prime quadruplets less than 1,000, |
Number of sexy prime quadruplets less than 1,000,035 = 325 |
||
The last 5 |
The last 5 are: |
||
[[977351 977357 977363 977369] [983771 983777 983783 983789] [986131 986137 986143 986149] [990371 990377 990383 990389] [997091 997097 997103 997109]] |
[[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, |
Number of sexy prime quintuplets less than 1,000,035 = 1 |
||
The last 1 is |
The last 1 is: |
||
[[5 11 17 23 29]] |
[[5 11 17 23 29]] |
||
Number of unsexy primes less than 1,000, |
Number of unsexy primes less than 1,000,035 = 48,627 |
||
The last 10 |
The last 10 are: |
||
[ |
[999853 999863 999883 999907 999917 999931 999961 999979 999983 1000003] |
||
</pre> |
</pre> |
||