Skip to content

Instantly share code, notes, and snippets.

@farribeiro
Last active December 13, 2023 02:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save farribeiro/adb4cb2150856d9a2b94e7a58c6d0edf to your computer and use it in GitHub Desktop.
Save farribeiro/adb4cb2150856d9a2b94e7a58c6d0edf to your computer and use it in GitHub Desktop.
-- Numeros primos
-- Inicializa a tabela 'primos' com o número 2, que é o primeiro número primo
primos = {2}
-- Função para verificar se um número é primo
function ehPrimo(num)
-- Verifica se o número é menor ou igual a 1, retornando falso nesses casos e
-- verifica se o número é par, excluindo todos os números pares maiores que 2, que não são primos
if num <= 1 or num % 2 == 0 then
return false
-- Verifica se o número é igual a 2, que é um número primo
-- elseif num == 2 then
-- return true
end
-- Define o limite para verificar os divisores até a raiz quadrada do número em questão
local limite = math.sqrt(num)
-- Loop para verificar se o número é divisível por algum número primo anterior
for _, var in ipairs(primos) do
-- Se o número primo atual for maior que a raiz quadrada do número, para a verificação
if var > limite then
break
-- Se o número for divisível pelo número primo atual, retorna falso (não é primo)
elseif num % var == 0 then
return false
end
end
-- Se o número não for divisível por nenhum número primo anterior, é considerado primo
return true
end
-- Loop para encontrar números primos de 3 a 10000 (somente números ímpares são verificados)
for num = 3, 10000, 2 do
-- Verifica se o número é primo usando a função 'ehPrimo' e o adiciona à tabela 'primos' se for primo
if ehPrimo(num) then
table.insert(primos, num)
end
end
-- Imprime os números primos separados por espaços
io.write(table.concat(primos, " "))
print (("Quantidade de numeros encontrados %d"):format(#primos))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment