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 ?

Leave a Reply