Rui Carlos Posted October 3, 2006 at 09:35 PM Report #54977 Posted October 3, 2006 at 09:35 PM 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) Rui Carlos Gonçalves
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now