Ormiston pairs: Difference between revisions

Realize in F#
m (→‎{{header|Raku}}: slightly more efficient, move computation out of the hot loop)
(Realize in F#)
Line 199:
</pre>
 
=={{header|F_Sharp|F#}}==
This task uses [http://www.rosettacode.org/wiki/Extensible_prime_generator#The_functions Extensible Prime Generator (F#)]
<syntaxhighlight lang="fsharp">
// Ormiston pairs. Nigel Galloway: January 31st., 2023
let fG(n,g)=let i=Array.zeroCreate<int>10
let rec fG n g=if g<10 then i[g]<-n i[g] 1 else i[g%10]<-n i[g%10] 1; fG n (g/10)
fG (+) n; fG (-) g; Array.forall ((=)0) i
primes32()|>Seq.pairwise|>Seq.filter fG|>Seq.take 30|>Seq.iter(printf "%A "); printfn ""
printfn $"<1 million: %d{primes32()|>Seq.takeWhile((>)1000000)|>Seq.pairwise|>Seq.filter fG|>Seq.length}"
printfn $"<10 million: %d{primes32()|>Seq.takeWhile((>)10000000)|>Seq.pairwise|>Seq.filter fG|>Seq.length}"
printfn $"<10 trillion: %d{primes32()|>Seq.takeWhile((>)1000000000)|>Seq.pairwise|>Seq.filter fG|>Seq.length}"
</syntaxhighlight>
{{out}}
<pre>
(1913, 1931) (18379, 18397) (19013, 19031) (25013, 25031) (34613, 34631) (35617, 35671) (35879, 35897) (36979, 36997) (37379, 37397) (37813, 37831) (40013, 40031) (40213, 40231) (40639, 40693) (45613, 45631) (48091, 48109) (49279, 49297) (51613, 51631) (55313, 55331) (56179, 56197) (56713, 56731) (58613, 58631) (63079, 63097) (63179, 63197) (64091, 64109) (65479, 65497) (66413, 66431) (74779, 74797) (75913, 75931) (76213, 76231) (76579, 76597)
<1 million: 382
<10 million: 3722
<100 million: 34901
<1 trillion: 326926
</pre>
=={{header|Factor}}==
{{works with|Factor|0.99 2022-04-03}}
2,172

edits