Project Euler – Problema 3

Riporto la soluzione in Haskell al terzo problema del Progetto Eulero:

n = 600851475143
–Controlla se un numero è primo
isprime 2 = True
isprime t = if (filter (==0) (map (t`mod`)[2.. ceiling(sqrt (fromIntegral t))])==[]) then True else False

— Risolve il problema
— N.B: L’algoritmo riporta solo i fattori primi, non l’esponente a cui compaiono
fattoriprimi = [x|x<-[x|x<-[2..ceiling((fromIntegral n)/2)], (n `mod` x)==0], isprime x]
result= maximum fattoriprimi

N.B: Testare il risultato può rihiedere molto tempo. Se e quando avrò tempo ottimizzerò il programma .

Ecco il testo del problema:

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

Annunci
Project Euler – Problema 3

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...