Determinando números primos em Lua

Ao ler o artigo do Marco André sobre uma função que determina os números primos até 1000 em http://www.pythonbrasil.com.br/moin.cgi/DeterminandoPrimos resolvi portá-la para lua.

A lógica é a mesma. Algumas considerações:

  • Em Lua não existe o operador += (somar e atribuir) assim como não existe o ++ (operador de incremento)
  • O {2} é uma tabela (table) em Lua.
  • O código abaixo é o equivalente à última versão do Marco André

primos.lua

limite = 1000

c = 1
p = 1
primos = {2}
for numero = 3,limite,2 do
    ehprimo = 1
    for key,i in pairs(primos) do
    c = c + 1
        if i > math.sqrt(numero) then
          break
        end
        if math.mod(numero,i)== 0 then
          ehprimo = 0
          break
        end
    end
    if ehprimo == 1 then
        table.insert(primos, numero)
        p = p + 1
    end
end

pr = table.concat(primos," ")
print(pr)
print("\n\nForam encontrados " .. p  .. " números primos.")
print("Foram necessárias "  ..c .. " comparações.")

 

This entry was posted in Lua, Python and tagged , . Bookmark the permalink.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>