DA

getPrimes([range])

Por dalvorsn, 22 de mar. de 2013 em Mods, funções e outros

9
1.5k
dalvorsnD
22 de março de 2013 às 13:50

  • Autor: Dalvo
  • Descrição: Função que retorna todos os numeros primos de 2 até range, se range está ausente range vale 2. O codigo é feito em lua puro, não há incompatibilidade. Quanto a utilidade, isso vai da criatividade.

getPrimes([range])



aaeS3AyL [/pastebin]

 

 

Duvidas, bugs ou erros reportem.

drakylucasD
28 de março de 2013 às 23:51

exercicio basico de lógica de programação :p

 

quem fez tecnico de informatica ou de informatica p/ internet com certeza vai precisar fazer isso! :p

 

tem também um exercicio de numeros perfeitos, tbm é legal fazer kk ^^

1 mês depois...
MatheusGladM
25 de abril de 2013 às 18:57

Para saber se um numero é primo voce só precisa testar se ele é multiplo de 2 ate a raiz desse numero.

 

Sua funçao demora 7.565 segundos para pegar o range de 2 ate 100000

Ja esta aqui leva 0.198 segundos.

 

function getPrimes(range)
range = range or 2
local ret = {}
local function isPrime(n)
 for d = 2, math.sqrt(n) do
  if n % d == 0 then
   return false
  end
 end
 return true
end
for i = 2, range do
 if isPrime(i) then
  table.insert(ret, i)
 end
end
return ret
end

CipSoftsC
25 de abril de 2013 às 19:16

Para saber se um numero é primo voce só precisa testar se ele é multiplo de 2 ate a raiz desse numero.

 

Sua funçao demora 7.565 segundos para pegar o range de 2 ate 100000

Ja esta aqui leva 0.198 segundos.

 

function getPrimes(range)
range = range or 2
local ret = {}
local function isPrime(n)
 for d = 2, math.sqrt(n) do
  if n % d == 0 then
return false
  end
 end
 return true
end
for i = 2, range do
 if isPrime(i) then
  table.insert(ret, i)
 end
end
return ret
end

 

renasceu das cinzas? kk'

MatheusGladM
25 de abril de 2013 às 19:18
:) Nada muito importante pra fazer agora,
1 mês depois...
dalvorsnD
07 de maio de 2013 às 23:59

Excelente metodo, não havia pensado dessa forma, sem duvida é bem mais eficiente fazer assim. :D

2 semanas depois...
VincV
17 de maio de 2013 às 12:20

lol vcs tão checando se se numeros pares são primos e checando se numeros impares são divisiveis por pares...

 

checa de 2 em dois a partir do 3.

dalvorsnD
17 de maio de 2013 às 18:57

lol vcs tão checando se se numeros pares são primos e checando se numeros impares são divisiveis por pares...

 

checa de 2 em dois a partir do 3.

Outra boa observação!

Ta parecendo até programação colaborativa :D

Esse é o bom do conteúdo open source ;>

VincV
18 de maio de 2013 às 10:06

assim divide só pelos primos antes da raiz.