Iccanobif primes: Difference between revisions
Content added Content deleted
m (→{{header|J}}) |
(Created Nim solution.) |
||
Line 563: | Line 563: | ||
879871752812976577066489068488 ... 466056251048748727893681871587 (4270 digits) |
879871752812976577066489068488 ... 466056251048748727893681871587 (4270 digits) |
||
818073763671137983636050093057 ... 882798314213687506007959668569 (10527 digits) |
818073763671137983636050093057 ... 882798314213687506007959668569 (10527 digits) |
||
</pre> |
|||
=={{header|Nim}}== |
|||
{{libheader|Nim-Integers}} |
|||
<syntaxhighlight lang="Nim">import std/strformat |
|||
import integers |
|||
func reversed(n: Integer): Integer = |
|||
## Return the "reversed" value of "n". |
|||
result = newInteger() |
|||
var n = n |
|||
while n != 0: |
|||
result = 10 * result + n mod 10 |
|||
n = n div 10 |
|||
iterator fib(): Integer = |
|||
## Yield the successive values of Fibonacci sequence. |
|||
var prev, curr = newInteger(1) |
|||
yield prev |
|||
while true: |
|||
yield curr |
|||
swap curr, prev |
|||
curr += prev |
|||
func compressed(str: string; size: int): string = |
|||
## Return a compressed value for long strings of digits. |
|||
if str.len <= 2 * size: str |
|||
else: &"{str[0..<size]}...{str[^size..^1]}" |
|||
func digitCount(s: string): string = |
|||
## Return the string which describes the number of digits. |
|||
result = $s.len & " digit" |
|||
if s.len > 1: result.add 's' |
|||
echo "First 25 Iccanobif primes:" |
|||
var count = 0 |
|||
for n in fib(): |
|||
let r = reversed(n) |
|||
if r.isPrime: |
|||
inc count |
|||
let s = $r |
|||
echo &"{count:>2}: {s.compressed(20)} ({s.digitCount()})" |
|||
if count == 25: break |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre>First 25 Iccanobif primes: |
|||
1: 2 (1 digit) |
|||
2: 3 (1 digit) |
|||
3: 5 (1 digit) |
|||
4: 31 (2 digits) |
|||
5: 43 (2 digits) |
|||
6: 773 (3 digits) |
|||
7: 7951 (4 digits) |
|||
8: 64901 (5 digits) |
|||
9: 52057 (5 digits) |
|||
10: 393121 (6 digits) |
|||
11: 56577108676171 (14 digits) |
|||
12: 940647607443258103531 (21 digits) |
|||
13: 5237879497657222310489731409575442761 (37 digits) |
|||
14: 9026258083384996860449366072142307801963 (40 digits) |
|||
15: 19900335674812302969...34431012073266446403 (80 digits) |
|||
16: 77841137362967479985...52312097783685331923 (104 digits) |
|||
17: 37722585901567604188...29174997072830756131 (137 digits) |
|||
18: 75736193894876131595...50767238644714305761 (330 digits) |
|||
19: 17890336847332837620...13175300695235035913 (406 digits) |
|||
20: 92327163101729115305...27061468856047302507 (409 digits) |
|||
21: 50420157810698056253...67335124247362214481 (503 digits) |
|||
22: 30511012474739380092...69296158361330018201 (888 digits) |
|||
23: 46818547042693694555...08664543144645856321 (1020 digits) |
|||
24: 87101347853037819884...20128396998865227391 (1122 digits) |
|||
25: 17451656022543765336...20100243761843652461 (1911 digits) |
|||
</pre> |
</pre> |
||