[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [obm-l] Clausula PROLOG para numeros primos
- To: obm-l@xxxxxxxxxxxxxx
- Subject: Re: [obm-l] Clausula PROLOG para numeros primos
- From: "Maurício" <briqueabraque@xxxxxxxxx>
- Date: Sat, 4 Jun 2005 17:52:35 -0700 (PDT)
- DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=HEeuoK2JeC5SJLVWgy/xN5KuhOL9+4U1eyYxiNYFvi9a4euEM3Y3N+oUD5odgJdYYHuHY+EJNHWVx16B5We9lyePnCM3bMdEDjKhmd2ydnOF51CDIIuYEoxRVBBa4I/rM0ZoXH5Xkyp16b0LFA0AfpQCQ92bB+cocCke1DRGUqo= ;
- In-Reply-To: <002a01c56791$e9337670$fc00a8c0@PC2000>
- Reply-To: obm-l@xxxxxxxxxxxxxx
- Sender: owner-obm-l@xxxxxxxxxxxxxx
Oi, pessoal, um abraço para todos! Sou novo na
lista, e estou começando a estudar matemática mais
seriamente há algum tempo. Espero poder contribuir com
questões interessantes.
Aqui está um programinha que eu fiz em Haskell, uma
linguagem "funcional", para listar números primos:
***********
non_multiplos n (h:t) = if (mod h n)/=0 then
h:(non_multiplos n t)
else (non_multiplos n t)
primos_aux (h:t) = h:(primos_aux (non_multiplos h t))
primos = primos_aux [2..]
***********
"non_multiplos" elimina de uma lista todos os
multiplos de um n. "primos_aux" pega uma lista, mantém
o primeiro número e elimina os seus múltiplos, e
depois se aplica recursivamente ao resto da lista.
"primos" aplica "primos_aux" à lista dos números
inteiros ("[2..]" é uma notação para
[2,3,4,5,6,7...]). Não mexo com Prolog há muitos anos,
mas talvez a idéia seja útil.
Se v. estiver procurando sarna pra se coçar, eu vi
esse site há algum tempo:
http://www.cse.iitk.ac.in/news/primality.html
Esses caras fizeram um método eficiente pra testar
se um número é primo ou não, sem precisar ficar
dividindo número por número. Não sei se é fácil de
programar.
Abraços,
Maurício
--- Murilo Rebouças Fernandes de Lima
<mrllima@terra.com.br> wrote:
> 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...
>
>
> >> >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??!?!??!!!?)
> >> > (...)
__________________________________
Discover Yahoo!
Use Yahoo! to plan a weekend, have fun online and more. Check it out!
http://discover.yahoo.com/
=========================================================================
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
=========================================================================