30 lines
934 B
Plaintext
30 lines
934 B
Plaintext
func max_prime_bases(ndig, maxbase=36) {
|
|
|
|
var maxprimebases = [[]]
|
|
var nwithbases = [0]
|
|
var maxprime = (10**ndig - 1)
|
|
|
|
for p in (idiv(maxprime + 1, 10) .. maxprime) {
|
|
var dig = p.digits
|
|
var bases = (2..maxbase -> grep {|b| dig.all { _ < b } && dig.digits2num(b).is_prime })
|
|
if (bases.len > maxprimebases.first.len) {
|
|
maxprimebases = [bases]
|
|
nwithbases = [p]
|
|
}
|
|
elsif (bases.len == maxprimebases.first.len) {
|
|
maxprimebases << bases
|
|
nwithbases << p
|
|
}
|
|
}
|
|
|
|
var (alen, vlen) = (maxprimebases.first.len, maxprimebases.len)
|
|
|
|
say("\nThe maximum number of prime valued bases for base 10 numeric strings of length ",
|
|
ndig, " is #{alen}. The base 10 value list of ", vlen > 1 ? "these" : "this", " is:")
|
|
maxprimebases.each_kv {|k,v| say(nwithbases[k], " => ", v) }
|
|
}
|
|
|
|
for n in (1..5) {
|
|
max_prime_bases(n)
|
|
}
|