52 lines
1.3 KiB
Lua
52 lines
1.3 KiB
Lua
-- Return boolean indicating whether or not n is prime
|
|
function isPrime (n)
|
|
if n <= 1 then return false end
|
|
if n <= 3 then return true end
|
|
if n % 2 == 0 or n % 3 == 0 then return false end
|
|
local i = 5
|
|
while i * i <= n do
|
|
if n % i == 0 or n % (i + 2) == 0 then return false end
|
|
i = i + 6
|
|
end
|
|
return true
|
|
end
|
|
|
|
-- Return table of frequencies for final digits of consecutive primes
|
|
function primeCon (limit)
|
|
local count, x, last, ending = 2, 3, 3
|
|
local freqList = {
|
|
[1] = {},
|
|
[2] = {[3] = 1},
|
|
[3] = {},
|
|
[5] = {},
|
|
[7] = {},
|
|
[9] = {}
|
|
}
|
|
repeat
|
|
x = x + 2
|
|
if isPrime(x) then
|
|
ending = x % 10
|
|
if freqList[last][ending] then
|
|
freqList[last][ending] = freqList[last][ending] + 1
|
|
else
|
|
freqList[last][ending] = 1
|
|
end
|
|
last = ending
|
|
count = count + 1
|
|
end
|
|
until count == limit
|
|
return freqList
|
|
end
|
|
|
|
-- Main procedure
|
|
local limit = 10^6
|
|
local t = primeCon(limit)
|
|
for a = 1, 9 do
|
|
for b = 1, 9 do
|
|
if t[a] and t[a][b] then
|
|
io.write(a .. " -> " .. b .. "\tcount: " .. t[a][b])
|
|
print("\tfrequency: " .. t[a][b] / limit * 100 .. " %")
|
|
end
|
|
end
|
|
end
|