программа находит делитель, который является простым числом, но простое число не является наибольшим (т.е есть простое больше) как это исправить?

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)

Ответы (0 шт):