Earliest difference between prime gaps: Difference between revisions

Realize in F#
(→‎{{header|Wren}}: Modified to use a segmented sieve.)
(Realize in F#)
Line 163:
</pre>
 
=={{header|F_Sharp|F#}}==
This task uses [http://www.rosettacode.org/wiki/Extensible_prime_generator#The_functions Extensible Prime Generator (F#)]
<lang fsharp>
// Earliest difference between prime gaps. Nigel Galloway: December 1st., 2021
let fN y=let i=System.Collections.Generic.SortedDictionary<int64,int64>()
let fN()=i|>Seq.pairwise|>Seq.takeWhile(fun(n,g)->g.Key=n.Key+2L)|>Seq.tryFind(fun(n,g)->abs(n.Value-g.Value)>y)
(fun(n,g)->let e=g-n in match i.TryGetValue(e) with (false,_)->i.Add(e,n); fN() |_->None)
[1..9]|>List.iter(fun g->let fN=fN(pown 10 g) in let n,i=(primes64()|>Seq.skip 1|>Seq.pairwise|>Seq.map fN|>Seq.find Option.isSome).Value
printfn $"%10d{pown 10 g} -> distance between start of gap %d{n.Key}=%d{n.Value} and start of gap %d{i.Key}=%d{i.Value} is %d{abs((n.Value)-(i.Value))}")
</lang>
{{out}}
<pre>
10 -> distance between start of gap 4=7 and start of gap 6=23 is 16
100 -> distance between start of gap 14=113 and start of gap 16=1831 is 1718
1000 -> distance between start of gap 14=113 and start of gap 16=1831 is 1718
10000 -> distance between start of gap 36=9551 and start of gap 38=30593 is 21042
100000 -> distance between start of gap 70=173359 and start of gap 72=31397 is 141962
1000000 -> distance between start of gap 100=396733 and start of gap 102=1444309 is 1047576
10000000 -> distance between start of gap 148=2010733 and start of gap 150=13626257 is 11615524
100000000 -> distance between start of gap 198=46006769 and start of gap 200=378043979 is 332037210
1000000000 -> distance between start of gap 276=649580171 and start of gap 278=4260928601 is 3611348430
</pre>
=={{header|Java}}==
Uses the PrimeGenerator class from [[Extensible prime generator#Java]].
2,171

edits