Wagstaff primes

var iter = Enumerator({|callback|
    var p = 2
    loop {
        var t = ((2**p + 1)/3)
        callback([p, t]) if t.is_prime
        p.next_prime!
    }
})

var n = 1
say "Index    Exponent         Prime"
say "-"*31

iter.each {|k|
    var (e, p) = k...
    p = "(#{p.len} digits)" if (n > 10)
    say "#{'%5s'%n} #{'%8s'%e} #{'%16s'%p}"
    break if (n == 24)
    ++n
}

Output:

Last updated

Was this helpful?