Largest difference between adjacent primes: Difference between revisions
(→{{header|Wren}}: Generalized to find the largest difference up to various limits.) |
|||
Line 34: | Line 34: | ||
=={{header|Ring}}== |
=={{header|Ring}}== |
||
{{incorrect|Ring|There are 342 primes between 994657 and 999269.}} |
|||
<lang ring> |
<lang ring> |
||
Line 42: | Line 41: | ||
Primes = [] |
Primes = [] |
||
maxOld = 0 |
maxOld = 0 |
||
newDiff = 0 |
|||
diffNew = 0 |
|||
oldDiff = 0 |
oldDiff = 0 |
||
for n = 1 to limit |
for n = 1 to limit |
||
newDiff = n - maxOld |
|||
if isprime(n) |
|||
diffNew = maxNew - maxOld |
|||
if newDiff > oldDiff |
|||
add(Primes,[n,maxOld]) |
add(Primes,[n,maxOld]) |
||
oldDiff = |
oldDiff = newDiff |
||
ok |
|||
maxOld = n |
|||
ok |
ok |
||
next |
next |
||
Line 65: | Line 64: | ||
<pre> |
<pre> |
||
working... |
working... |
||
492227 |
|||
999269 |
|||
492113 |
|||
994657 |
|||
Largest difference is = |
Largest difference is = 114 |
||
done... |
done... |
||
</pre> |
</pre> |
Revision as of 12:51, 19 November 2021
- Task
Find and show on this page the largest difference between adjacent primes under 1,000,000.
Raku
Built-ins
<lang perl6>for 2..8 -> $n {
printf "Largest prime gap up to {10 ** $n}: %d - between %d and %d.\n", .[0], |.[1] given max (^10**$n).grep(&is-prime).rotor(2=>-1).map({.[1]-.[0],$_})
}</lang>
- Output:
Largest prime gap up to 100: 8 - between 89 and 97. Largest prime gap up to 1000: 20 - between 887 and 907. Largest prime gap up to 10000: 36 - between 9551 and 9587. Largest prime gap up to 100000: 72 - between 31397 and 31469. Largest prime gap up to 1000000: 114 - between 492113 and 492227. Largest prime gap up to 10000000: 154 - between 4652353 and 4652507. Largest prime gap up to 100000000: 220 - between 47326693 and 47326913.
Or, significantly faster using a
Module
<lang perl6>use Math::Primesieve; my $sieve = Math::Primesieve.new;
for 2..8 -> $n {
printf "Largest prime gap up to {10 ** $n}: %d - between %d and %d.\n", .[0], |.[1] given max $sieve.primes(10 ** $n).rotor(2=>-1).map({.[1]-.[0],$_})
}</lang> Same output
Ring
<lang ring> load "stdlib.ring" see "working..." + nl limit = 1000000 Primes = [] maxOld = 0 newDiff = 0 oldDiff = 0
for n = 1 to limit
newDiff = n - maxOld if isprime(n) if newDiff > oldDiff add(Primes,[n,maxOld]) oldDiff = newDiff ok maxOld = n ok
next
len = len(Primes) diff = Primes[len][1] - Primes[len][2] see Primes[len(Primes)] see nl + "Largest difference is = " + diff + nl see "done..." + nl </lang>
- Output:
working... 492227 492113 Largest difference is = 114 done...
Wren
<lang ecmascript>import "./math" for Int, Nums import "/fmt" for Fmt
var limit = 1e9 - 1 var primes = Int.primeSieve(limit) var maxI = 0 var maxDiff = 0 var nextStop = 10 System.print("The largest differences between adjacent primes under the following limits is:") for (i in 1...primes.count) {
var diff = primes[i] - primes[i-1] if (diff > maxDiff) { maxDiff = diff maxI = i } if (i == primes.count - 1 || primes[i+1] > nextStop) { Fmt.print("Under $,d: $,d - $,d = $,d", nextStop, primes[maxI], primes[maxI-1], maxDiff) nextStop = nextStop * 10 }
}</lang>
- Output:
The largest differences between adjacent primes under the following limits is: Under 10: 5 - 3 = 2 Under 100: 97 - 89 = 8 Under 1,000: 907 - 887 = 20 Under 10,000: 9,587 - 9,551 = 36 Under 100,000: 31,469 - 31,397 = 72 Under 1,000,000: 492,227 - 492,113 = 114 Under 10,000,000: 4,652,507 - 4,652,353 = 154 Under 100,000,000: 47,326,913 - 47,326,693 = 220 Under 1,000,000,000: 436,273,291 - 436,273,009 = 282