• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Rui Carlos

[Código] Testar a conjectura de Goldbach

1 mensagem neste tópico

Na sequência deste tópico escrevi uma função em Haskell para testar se um número pode ser escrito como a soma de dois primos.

No programa temos também uma função que implementa o Crivo de Eratosthenes.

module Goldbach where

crivoEratosthenes::[int]->[int]
crivoEratosthenes []   =[]
crivoEratosthenes (h:t)=let t'=[n|n<-t,mod n h/=0]
                       in  h:(crivoEratosthenes t')

primos::Int->[int]
primos n=crivoEratosthenes [2..n]


-- Dado um inteiro n devolve
--   "Nothing" se não for possível escreve-lo como a soma dedois inteiros
--   Just (a,b), com a e b primos e a+b=n, caso contrário
goldbach::Int->Maybe (Int,Int)
goldbach n=case [(p,q)|p<-primos n,q<-primos n,n==p+q] of
            []->Nothing
            l ->Just (head l)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora