RosettaCodeData/Task/Factorial-primes/Lua/factorial-primes.lua

30 lines
803 B
Lua
Raw Permalink Normal View History

2025-08-11 18:05:26 -07:00
do -- find some factorial primes - primes that are f - 1 or f + 1 for some factorial f
2023-07-18 13:51:12 -07:00
2025-08-11 18:05:26 -07:00
local function isPrime( p )
2023-07-18 13:51:12 -07:00
if p <= 1 or p % 2 == 0 then
return p == 2
else
2025-08-11 18:05:26 -07:00
local prime, i, rootP = true, 3, math.floor( math.sqrt( p ) )
2023-07-18 13:51:12 -07:00
while i <= rootP and prime do
2025-08-11 18:05:26 -07:00
prime, i = p % i ~= 0, i + 1
2023-07-18 13:51:12 -07:00
end
return prime
end
end
2025-08-11 18:05:26 -07:00
local f, fpCount, n = 1, 0, 1
2023-07-18 13:51:12 -07:00
while fpCount < 10 do
2025-08-11 18:05:26 -07:00
f = f * n
local fpOp = "-"
2023-07-18 13:51:12 -07:00
for fp = f - 1, f + 1, 2 do
if isPrime( fp ) then
fpCount = fpCount + 1
2025-08-11 18:05:26 -07:00
io.write( string.format( "%2d:%4d! %s 1 = %d\n", fpCount, n, fpOp, fp ) )
2023-07-18 13:51:12 -07:00
end
fpOp = "+"
end
2025-08-11 18:05:26 -07:00
n = n + 1
2023-07-18 13:51:12 -07:00
end
end