getPrimes([range])

dalvorsn
em Mods, funções e outros

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

  • 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.

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

drakylucas

Draky Scripter
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 12/09/10Posts: 416Char no Tibia: Draky Lucas

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 ^^

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo

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

Yours Mkalo :)

CipSofts

www.tibia.com Play FREE
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 13/03/13Posts: 50

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'

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo
:) Nada muito importante pra fazer agora,

Yours Mkalo :)

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

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

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

Vinc

The white fox
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/10/11Posts: 625Gênero: Masculino

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.

^w^

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

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 ;>

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

Vinc

The white fox
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/10/11Posts: 625Gênero: Masculino

assim divide só pelos primos antes da raiz.

^w^