Earliest difference between prime gaps: Difference between revisions
Content added Content deleted
m (→{{header|Wren}}: Minor tidy) |
(Added FreeBASIC) |
||
Line 289: | Line 289: | ||
1000000000 -> distance between start of gap 276=649580171 and start of gap 278=4260928601 is 3611348430 |
1000000000 -> distance between start of gap 276=649580171 and start of gap 278=4260928601 is 3611348430 |
||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|C++}} |
|||
<syntaxhighlight lang="vbnet">Type PrimeGaps |
|||
As Ulong lastPrime |
|||
As Ulongint gapStarts(1 To 1e7) |
|||
End Type |
|||
Function NextPrime(n As Ulong) As Ulong |
|||
Dim As Ulong j, i = n + 1 |
|||
Do |
|||
For j = 2 To Sqr(i) |
|||
If i Mod j = 0 Then Exit For |
|||
Next j |
|||
If j > Sqr(i) Then Return i |
|||
i += 1 |
|||
Loop |
|||
End Function |
|||
Function findGapStart(Byref pg As PrimeGaps, gap As Ulongint) As Ulongint |
|||
Dim As Ulongint prev, diff |
|||
If pg.gapStarts(gap) <> 0 Then Return pg.gapStarts(gap) |
|||
Do |
|||
prev = pg.lastPrime |
|||
pg.lastPrime = NextPrime(pg.lastPrime) |
|||
diff = pg.lastPrime - prev |
|||
pg.gapStarts(diff) = prev |
|||
If gap = diff Then Return prev |
|||
Loop |
|||
End Function |
|||
Dim Shared As PrimeGaps pg |
|||
pg.lastPrime = NextPrime(2) |
|||
Dim As Ulongint limit = 1e7 |
|||
Dim As Integer pm = 10 |
|||
Dim As Ulongint start1, start2, gap1 = 2, gap2, diff |
|||
Do |
|||
start1 = findGapStart(pg, gap1) |
|||
gap2 = gap1 + 2 |
|||
start2 = findGapStart(pg, gap2) |
|||
diff = Abs(start2 - start1) |
|||
If diff > pm Then |
|||
Print "Earliest difference >"; pm; " between adjacent prime gap starting primes:" |
|||
Print "Gap "; gap1; " starts at "; start1; ", gap "; gap2; " starts at "; start2; ", difference is "; diff; !".\n" |
|||
If pm = limit Then Exit Do |
|||
pm *= 10 |
|||
Else |
|||
gap1 = gap2 |
|||
End If |
|||
Loop |
|||
Sleep</syntaxhighlight> |
|||
=={{header|Go}}== |
=={{header|Go}}== |
||
{{trans|Wren}} |
{{trans|Wren}} |