Pour m'entraîner, j'ai écrit un programme Haskell pour trouver les facteurs premiers.
Le code est le suivant :
getfactors :: Int -> [Int]
getfactors n = [x | x<-[1..n], n `mod` x == 0]
prime :: Int -> Bool
prime n | getfactors n == [1,n] = True
| otherwise = False
primefactors :: Int -> [Int]
primefactors n = [x | x <- getfactors n, prime x == True]
Tout fonctionne bien pour les petits nombres, mais lorsque j'entre de grands nombres, le calcul s'arrête au plus grand facteur premier et la liste attendue ne se ferme pas. Par exemple :
>primefactors 1263
[3,421]
>primefactors 1387781234
[2,7,2161,6553
Une explication est très appréciée.