(phixonline)-->
with javascript_semantics
include mpfr.e
procedure repunit(mpz z, integer n, base=10)
mpz_set_si(z,0)
for i=1 to n do
mpz_mul_si(z,z,base)
mpz_add_si(z,z,1)
end for
end procedure
atom t0 = time()
constant {limit,blimit} = iff(platform()=JS?{400,16} -- 8.8s
:{1000,16}) -- 50.3s
-- :{1000,36}) -- 4 min 20s
-- :{2700,16}) -- 28 min 35s
-- :{2700,36}) -- >patience
sequence primes = get_primes_le(limit)
mpz z = mpz_init()
for base=2 to blimit do
sequence rprimes = {}
for i=1 to length(primes) do
integer p = primes[i]
repunit(z,p,base)
if mpz_prime(z) then
rprimes = append(rprimes,sprint(p))
end if
end for
printf(1,"Base %2d: %s\n", {base, join(rprimes)})
end for
?elapsed(time()-t0)