35 lines
1 KiB
Text
35 lines
1 KiB
Text
local int = require "int"
|
|
local fmt = require "fmt"
|
|
require "table2"
|
|
|
|
local function successive_primes(primes, diffs)
|
|
local results = {}
|
|
local dl = #diffs
|
|
for i = 1, #primes - dl do
|
|
local group = table.rep(dl + 1, 0)
|
|
group[1] = primes[i]
|
|
for j = i, i + dl - 1 do
|
|
if primes[j + 1] - primes[j] != diffs[j - i + 1] then
|
|
continue 2
|
|
end
|
|
group[j - i + 2] = primes[j + 1]
|
|
end
|
|
results:insert(group)
|
|
end
|
|
return results
|
|
end
|
|
|
|
local primes = int.primes(999_999)
|
|
local diffs_list = { {2}, {1}, {2, 2}, {2, 4}, {4, 2}, {6, 4, 2} }
|
|
print("For primes less than 1,000,000:-\n")
|
|
for diffs_list as diffs do
|
|
print($" For differences of {fmt.swrite(diffs)} ->")
|
|
local sp = successive_primes(primes, diffs)
|
|
if #sp == 0 then
|
|
print(" No groups found\n")
|
|
continue
|
|
end
|
|
print($" First group = {fmt.swrite(sp[1])}")
|
|
print($" Last group = {fmt.swrite(sp[#sp])}")
|
|
print($" Number found = {#sp}\n")
|
|
end
|