[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obm-l] Clausula PROLOG para numeros primos



  sempre o quadrado perfeito de dois primos ira dar errado... reveja a sua 
formula. nao precisa trestar sqrt(x) e sim de 2 ate parte inteira de sqrt(x) 
e no caso de ser inteiro sqrt(x)-1...


  ----- Original Message ----- 
  From: "Demétrius" <demas1976@yahoo.com.br>
  To: <obm-l@mat.puc-rio.br>
  Sent: Thursday, June 02, 2005 12:09 PM
  Subject: RE: [obm-l] Clausula PROLOG para numeros primos


  >> >DEVERIA Executar Assim:
  >> >?primo(9, 2).
  >> >no.
  >> >?primo(11, 2).
  >> >yes
  > Estes eram os resultados esperados, o que acontece é:
  > ?primo(3, 2).
  > yes.
  > ?primo(4, 2).
  > no.
  > ?primo(5, 2).
  > yes.
  > ?primo(6, 2).
  > no.
  > ?primo(7, 2).
  > yes
  > ?primo(8, 2).
  > no.
  > ?primo(9, 2).
  > yes.
  >
  > Parece que consegui determinar apenas se o número é
  > ímpar ou não!
  >
  > O algoritmo PROLOG executa em árvore com unificação.
  > Resumindo, de acordo com sua dedução de as
  > ramificações serem verdadeiras!
  >
  > Não tenho o compilador instalado na minha máquina aqui
  > no trabalho mas vou testar em casa e retorno depois!
  >
  > Obrigado!
  >
  >
  > --- Qwert Smith <lord_qwert@hotmail.com> escreveu:
  >
  >> >From: Demétrius <demas1976@yahoo.com.br>
  >> >
  >> >[...]
  >> >Verificar se existe divisão exata de X por todos os
  >> >números maiores que 1 e menores que X. Se não
  >> existir
  >> >o número é primo! (OK??!?!??!!!?)
  >> >
  >> >Alguém teria uma alguma outra sujestão?!?!?
  >> >
  >>
  >> Basta testar so os numeros ate sqrt(X).
  >>
  >> >A minha cláusula PROLOG meia boca é:
  >> >
  >> >% Entrada de um dado número X e o divisor de
  >> >% verificação par N = 2
  >> >primo(X, N):- N < X, A is (X mod N), A\=0, N1 is
  >> N+1,
  >> >primo(X, N1).
  >> >
  >> >DEVERIA Executar Assim:
  >> >?primo(9, 2).
  >> >no.
  >> >?primo(11, 2).
  >> >yes.
  >> >
  >> >Mas algo está errado.... Estou testando o 9 pois
  >> ele é
  >> >impar é pequeno e não é primo!!
  >> >[...]
  >>
  >> Vc nao diz oque te leva a creer que algo esta
  >> errado.
  >> Vc colocou o output esperado, mas nao colocou o que
  >> de fato retorna.
  >> Sera que ta retornando sempre no?
  >>
  >> Eu nao sei proplog mas acho que o yes ou no da
  >> resposta depende de todas
  >> as ramificacoes serem ou nao verdadeiras
  >>
  >> tente adicionar a seguinte clausula no comeco:
  >> primo(X,X):- true.
  >>
  >> Assim o seu programa mesmo que ineficiente deve te
  >> dar a resposta esperada.
  >>
  >> Faz:
  >> ?- trace
  >> ?- primo(9,2)
  >> ?-primo(11,2)
  >> ?- notrace
  >>
  >> Se vc quer uma ajuda mais detalhada em debugging o
  >> seu programa
  >>
  >>
  >>
  > 
=========================================================================
  >> Instruções para entrar na lista, sair da lista e
  >> usar a lista em
  >> http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
  >>
  > 
=========================================================================
  >>
  >
  >
  >
  >
  >
  >
  > ____________________________________________________
  > Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis! 
http://mail.yahoo.com.br
  > 
=========================================================================
  > Instruções para entrar na lista, sair da lista e usar a lista em
  > http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
  > 
=========================================================================
  >



=========================================================================
Instruções para entrar na lista, sair da lista e usar a lista em
http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
=========================================================================