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" <[EMAIL PROTECTED]>
 To: <[email protected]>
 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 <[EMAIL PROTECTED]> escreveu:
 >
 >> >From: Dem�trius <[EMAIL PROTECTED]>
 >> >
 >> >[...]
 >> >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
=========================================================================

Responder a