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