[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
=========================================================================