小编xzh*_*hao的帖子

Haskell程序与Perl相比性能低下

我正在使用Haskell处理Facebook Hackercup 2015问题并且遇到了这个问题.

输入:以整数T开头,问题数量.对于每个问题,有一行包含3个以空格分隔的整数:A,B和K.

输出:对于第i个问题,打印包含"Case #i:"的行,后跟包含范围[A,B]中的优先级为K的整数数.

数字X的优先级是其主要因素的数量.例如,12的优先级是2(因为它可以被素数2和3整除),550的优先级是3(因为它可以被素数2,5和11整除),7的优先级是1(作为只有素数可以被7整除.

1≤T≤1002≤A≤B≤10^ 71≤K≤10^ 9 

这是我的Haskell解决方案:

import System.IO
import Data.List
import Control.Monad

incEvery :: Int -> [(Int -> Int)]
incEvery n = (cycle ((replicate (n-1) id) ++ [(+ 1)]))

primes2 :: [Int]
primes2 = sieve 2 (replicate (10^7) 0)
  where
    sieve _ [] = []
    sieve n (a:xs) = (a + (if a == 0 then 1 else 0))
      : if a == 0 then
          sieve (n+1) (zipWith ($) (incEvery n) xs)
        else …
Run Code Online (Sandbox Code Playgroud)

perl performance haskell

4
推荐指数
2
解决办法
486
查看次数

标签 统计

haskell ×1

performance ×1

perl ×1