Ormiston pairs: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Raku}}: slightly more efficient, move computation out of the hot loop) |
(Realize in F#) |
||
Line 199: | Line 199: | ||
</pre> |
</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}}== |
=={{header|Factor}}== |
||
{{works with|Factor|0.99 2022-04-03}} |
{{works with|Factor|0.99 2022-04-03}} |