программа находит делитель, который является простым числом, но простое число не является наибольшим (т.е есть простое больше) как это исправить?
local n = 600851475143
local sqrt_n = math.floor(math.sqrt(n))
local p = 1
while (p <= sqrt_n) do
local q = n
for i = p + 1, sqrt_n do
if (n % i == 0) then
q = i
break
end
end
p = q
while (n % p == 0) do
n = n // p
end
sqrt_n = math.floor(math.sqrt(n))
end
print(p)