Conectar-se
Quem está conectado
27 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 25 Visitantes

diassis, rafaelviodres1

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota B
Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Número de Mensagens : 764
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuário

Dividir pelos numeros primos e se nao der aumentar

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 ?
avatar
Data de inscrição : 28/03/2012
Número de Mensagens : 24
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

em Qua 28 Mar 2012, 15:38
Eu não sei, não sou Expert em codificações!
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Dividir pelos numeros primos e se nao der aumentar

em Qua 28 Mar 2012, 15:58
você quer que i tenha valores apenas de números primos?
avatar
Ranking : Nota B
Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Número de Mensagens : 764
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

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
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

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!


avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

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.
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Dividir pelos numeros primos e se nao der aumentar

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.
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

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?
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Dividir pelos numeros primos e se nao der aumentar

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)
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

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.
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Dividir pelos numeros primos e se nao der aumentar

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

avatar
Ranking : Nota B
Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Número de Mensagens : 764
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuário

Re: Dividir pelos numeros primos e se nao der aumentar

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
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum