Determinando números primos em Lua

por Walter Cruz on 29/11/2005
in Python, 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.")

 

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Sem feedback para esse post ainda

    Share Your Thoughts


    Seu endereço de e-mail não será revelado nesse site.

    Sua URL será exibida.
    PobreExcelente
    (Quebras de linha se tornam <br />)
    (Nome, e-mail & website)
    (Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
    Subscribe to comments by email

    You can just use your OpenID to provide your name, e-mail and url.