Successive prime differences: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
|||
Line 30: | Line 30: | ||
:#https://www.primepuzzles.net/puzzles/puzz_011.htm |
:#https://www.primepuzzles.net/puzzles/puzz_011.htm |
||
:#https://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=232720&start=0 |
:#https://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=232720&start=0 |
||
=={{header|11l}}== |
|||
{{trans|D}} |
|||
<lang 11l>F primes_upto(limit) |
|||
V is_prime = [0B] * 2 [+] [1B] * (limit - 1) |
|||
L(n) 0 .< Int(limit ^ 0.5 + 1.5) |
|||
I is_prime[n] |
|||
L(i) (n * n .< limit + 1).step(n) |
|||
is_prime[i] = 0B |
|||
R enumerate(is_prime).filter((i, prime) -> prime).map((i, prime) -> i) |
|||
F successive_primes(primes, diffs) |
|||
[[Int]] results |
|||
V dl = diffs.len |
|||
L(i) 0 .< primes.len - dl |
|||
V group = [0] * (dl + 1) |
|||
group[0] = primes[i] |
|||
L(j) i .+ dl |
|||
I primes[j + 1] - primes[j] != diffs[j - i] |
|||
L.break |
|||
group[j - i + 1] = primes[j + 1] |
|||
L.was_no_break |
|||
results [+]= group |
|||
R results |
|||
V prime_list = primes_upto(1'000'000) |
|||
print(‘For primes less than 1,000,000:-’) |
|||
L(diffs) [[2], [1], [2, 2], [2, 4], [4, 2], [6, 4, 2]] |
|||
print(‘ For differences of #. ->’.format(diffs)) |
|||
V sp = successive_primes(prime_list, diffs) |
|||
print(‘ First group = ’sp[0]) |
|||
print(‘ Last group = ’sp.last) |
|||
print(‘ Number found = ’sp.len) |
|||
print()</lang> |
|||
{{out}} |
|||
<pre> |
|||
For primes less than 1,000,000:- |
|||
For differences of [2] -> |
|||
First group = [3, 5] |
|||
Last group = [999959, 999961] |
|||
Number found = 8169 |
|||
For differences of [1] -> |
|||
First group = [2, 3] |
|||
Last group = [2, 3] |
|||
Number found = 1 |
|||
For differences of [2, 2] -> |
|||
First group = [3, 5, 7] |
|||
Last group = [3, 5, 7] |
|||
Number found = 1 |
|||
For differences of [2, 4] -> |
|||
First group = [5, 7, 11] |
|||
Last group = [999431, 999433, 999437] |
|||
Number found = 1393 |
|||
For differences of [4, 2] -> |
|||
First group = [7, 11, 13] |
|||
Last group = [997807, 997811, 997813] |
|||
Number found = 1444 |
|||
For differences of [6, 4, 2] -> |
|||
First group = [31, 37, 41, 43] |
|||
Last group = [997141, 997147, 997151, 997153] |
|||
Number found = 306 |
|||
</pre> |
|||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |