Prime numbers whose neighboring pairs are tetraprimes
func display(arr, p, f, g, type, limit, display_primes) {
var s = arr.map(f).grep{.is_prime}
print "Found #{s.len.commify} primes under #{limit.commify} whose #{type} neighboring pair are tetraprimes"
if (display_primes) {
say ':'
s.slices(10).each{.map { "%#{limit.len+1}s" % _ }.join.say }
}
with (p) {|p|
var c = s.count {|a| is_div(g(a), p) || is_div(g(g(a)), p) }
say "\nof which #{c.commify} have a neighboring pair one of whose factors is #{p}.\n"
}
var D = s.diffs
func median(a) {
var l = a.len
var j = l>>1
l.is_even ? ((a[j-1] + a[j]) >> 1) : a[j]
}
say("Minimum gap between those #{s.len.commify} primes: ", D.min)
say("Median gap between those #{s.len.commify} primes: ", median(D.sort))
say("Maximum gap between those #{s.len.commify} primes: ", D.max)
say ''
}
for limit in (1e5, 1e6, 1e7) {
var arr = 4.squarefree_almost_primes(limit).cons(2).grep_2d{|a,b| b-a == 1 }
display(arr, 7, {.last.inc}, {.dec}, "preceding", limit, limit <= 1e5)
display(arr, 7, {.first.dec}, {.inc}, "following", limit, limit <= 1e5)
}Output:
Last updated
Was this helpful?