34 lines
1,016 B
Text
34 lines
1,016 B
Text
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()
|