代码之家  ›  专栏  ›  技术社区  ›  Jones1220

计算完成后未关闭列表

  •  2
  • Jones1220  · 技术社区  · 6 年前

    在实践中,我编写了一个haskell程序来寻找主要因素。

    代码如下:

    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]
    

    对于较小的数字,一切都可以正常工作,但是当我输入较大的数字时,计算将停止在最大的素数因子处,并且预期的列表不会关闭。 例如:

    >primefactors 1263
    [3,421]
    >primefactors 1387781234
    [2,7,2161,6553
    

    非常感谢你的解释。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Daniel Wagner    6 年前

    > :set +s
    > primefactors 1387781234
    [2,7,2161,6553]
    (368.04 secs, 288,660,869,072 bytes)