Prime reciprocal sum: Difference between revisions
Content added Content deleted
(Added Wren) |
|||
Line 141: | Line 141: | ||
15: 11390125639471674628..31060548964273180103 (2358 digits) |
15: 11390125639471674628..31060548964273180103 (2358 digits) |
||
16: 36961763505630520555..02467094377885929191 (4711 digits)</pre> |
16: 36961763505630520555..02467094377885929191 (4711 digits)</pre> |
||
=={{header|Wren}}== |
|||
{{libheader|Wren-gmp}} |
|||
{{libheader|Wren-fmt}} |
|||
Even with GMP takes about 4½ minutes to find the first 16. |
|||
<syntaxhighlight lang="ecmascript">import "./gmp" for Mpz, Mpq |
|||
import "./fmt" for Fmt |
|||
var q = Mpq.new() |
|||
var p = Mpz.new() |
|||
var r = Mpq.new() |
|||
var s = Mpq.new() |
|||
var count = 0 |
|||
var limit = 16 |
|||
Fmt.print("First $d elements of the sequence:", limit) |
|||
while (count < limit) { |
|||
q.set(Mpq.one.sub(s)).inv |
|||
var isInteger = (q.den == Mpz.one) |
|||
if (isInteger) p.set(q.toMpz) else p.set(q.toMpz.inc) |
|||
p.nextPrime(p) |
|||
count = count + 1 |
|||
var ps = p.toString |
|||
Fmt.write("$2d: $20a", count, p) |
|||
if (ps.count > 40) { |
|||
Fmt.print(" (digits: $d)", ps.count) |
|||
} else { |
|||
System.print() |
|||
} |
|||
r.set(p).inv |
|||
s.add(r) |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
First 16 elements of the sequence: |
|||
1: 2 |
|||
2: 3 |
|||
3: 7 |
|||
4: 43 |
|||
5: 1811 |
|||
6: 654149 |
|||
7: 27082315109 |
|||
8: 153694141992520880899 |
|||
9: 337110658273917297268061074384231117039 |
|||
10: 84241975970641143191...13803869133407474043 (digits: 76) |
|||
11: 20300753813848234767...91313959045797597991 (digits: 150) |
|||
12: 20323705381471272842...21649394434192763213 (digits: 297) |
|||
13: 12748246592672078196...20708715953110886963 (digits: 592) |
|||
14: 46749025165138838243...65355869250350888941 (digits: 1180) |
|||
15: 11390125639471674628...31060548964273180103 (digits: 2358) |
|||
16: 36961763505630520555...02467094377885929191 (digits: 4711) |
|||
</pre> |