Dividir pelos numeros primos e se nao der aumentar

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Dividir pelos numeros primos e se nao der aumentar

Mensagem por Lukbebalduke em Qua 28 Mar 2012, 15:32

Pessoal to com uma duvida aqui, quero dividir um numero por um numero primo e se for exato ele executa uma açao. Pensei em algo tipo

Código:
if round(numero/i) = numero/i
{//açao}
else
i+=1

Acontece que isso acaba nao limitando somente os numeros primos, como fasso isso ?

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por SuperArthurBros em Qua 28 Mar 2012, 15:38

Eu não sei, não sou Expert em codificações!

SuperArthurBros

Número de Mensagens : 24
Data de inscrição : 28/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por shatterhand2 em Qua 28 Mar 2012, 15:58

você quer que i tenha valores apenas de números primos?

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por Lukbebalduke em Qua 28 Mar 2012, 16:06

Sim.

E Super Arthur Bros, nao precisa comenta entao hein ! E isso nao me parece expert.Se é que vc chegou a entender o codigo que eu dei de exemplo

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por PedroX em Qua 28 Mar 2012, 16:08

frac é mais curto e rápido.
Ele retorna o número depois da vírgula.
No caso seria 0.
Código:
if frac(numero/i)==0 and primo(i)
{}

Crie um script chamado primo.

Agora você deve testar se o número é primo.
Isso é impossível, mas dá para fazer até certo valor.
Existem infinitos primos (teoricamente).

Até mais!



PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por Klior em Qua 28 Mar 2012, 16:11

Não é tão fácil assim como parece, de uma olhada nesse exemplo e veja se ajuda
http://gamemakernetwork.com/uploads/packages/Prime%20Number%20Generator.gmk
Não é de minha autoria.

Klior

Número de Mensagens : 426
Idade : 25
Data de inscrição : 07/03/2010
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por shatterhand2 em Qua 28 Mar 2012, 16:39

Verificar se um número é primo não é tão difícil.

Se você quer que i seja sempre primo, ao invés de fazer i+=1, mande rodar um script

muda_primo()

ai o script pode ser algo assim:

Código:


i+=1
primo = true
for (a=2;a<i;a+=1)
{
  if ( i mod a == 0)
  {
    primo = false
  }
}
if primo == false
{
  muda_primo()
}

Não testei, mas acho que deve funcionar.

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por Klior em Qua 28 Mar 2012, 16:48

shatterhand2 escreveu:
Verificar se um número é primo não é tão difícil.

Não testei, mas acho que deve funcionar.

Se você nem testou se funciona, como sabe se não é tão difícil?

Klior

Número de Mensagens : 426
Idade : 25
Data de inscrição : 07/03/2010
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por shatterhand2 em Qua 28 Mar 2012, 17:05

Eu já fiz isso dezenas de vezes. É exercício básico de algoritmo , independente de que linguagem você esteja usando pra aprender algoritmo.

É igual exercício pra calcular uma fatorial usando função recursiva ou exercício pra calcular a determinante de uma matriz 3x3 a partir de um vetor de duas dimensões. Todo aluno de algoritmo já fez esses exercícios.

Na verdade eu tenho certeza que funciona, só não quis dizer que tinha certeza pra não parecer arrogante, pelo fato de que realmente não testei, e poderia ter errado algo na sintaxe ou na digitação.

Edit - Você ao menos olhou o código? Ele é óbvio na sua execução, não tem mistério ali. Se você fizer um teste de mesa, vai ver que está ok.


Última edição por shatterhand2 em Qua 28 Mar 2012, 17:09, editado 1 vez(es)

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por saim em Qua 28 Mar 2012, 17:08

É verdade, teoricamente, funciona. Só não é muito rápido.
O primo, em questão, é o "i". Essa é a variável que armazena o número primo atual. O script acha o próximo (testando um-por-um dos números, e em cada número, um-por-um dos divisores possíveis).

Não consigo pensar num jeito mais rápido de aumentar o número primo.
Talvez fosse mais rápido testar se você fosse armazenando todos os primos numa ds_list ou array e testasse a divisão apenas com relação aos números primos anteriores.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por shatterhand2 em Qua 28 Mar 2012, 17:11

"Todos os primos" não existe. Existe um número infinito de números primos. Então não daria certo.

Existem maneiras mais rápidas de fazer sim, mas essa é a mais simples de entender.

Edit: Ops, agora que entendi que você sugeriu colocar os números primos que já foram testados e confirmados como primos na lista.

Sim, isso funcionaria e seria mais rápido. O algoritmo seria um pouquinho diferente.. pra economizar você já poderia começar colocando 1, 2 e 3 na lista, e começar a testar apenas a partir de 4. Dai testava com os números da lista e caso nenhum deles desse resto 0 na divisão, o acrescenta na lista.

Você gastaria mais memória, mas gastaria menos ciclos do processador.

Já que a discussão é essa, no algoritmo que eu escrevi acima, o for poderia ser só até a raiz quadrada arredondada pra cima de i, também daria certo e seria mais rápido... mas pra números grandes a sua solução ainda seria mais rápida.

Se i tivesse um valor máximo, seria mais fácil fazer um algoritmo rápido e econômico no gasto de memória também Smile


shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por Lukbebalduke em Qua 28 Mar 2012, 18:22

Nao cheguei a testar , mais bolei um negocio aqui e vou testar se nao der, vejo o seu OK.

Imprecionante o saim nao ter uma resposta XD

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Dividir pelos numeros primos e se nao der aumentar

Mensagem por Conteúdo patrocinado Hoje à(s) 23:54


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum