Pfeffer 2019-04-23 11:40 采纳率: 50%
浏览 248
已结题

获取给定数的质因数数组(Haskell)

图片说明

import Data.List

main :: IO ()    -- This says that main is an IO action.
main = return () -- This tells main to do nothing

--the second primnumer Function from leture
--用下面这个教材上程序部分可以获得质数数组,采用的方法是质数筛选法,但是感觉不大对,我的具体分析放在了图片。
primnumber = 2: [n| n<-[3..], prim n primnumber]
prim n (p:xs) 
    | p*p > n = True
    | n `mod` p == 0 = False
    | otherwise = prim n xs

-------------------------------------------------------
-- 这个部分是我自己写的,用来获得一个规定数的质因数
-- 例如: 84 = [2,2,3,7] 
--跪求修改一下这个部分
primfactor :: (Int a) => a ->[a]
primfactor m 
    | npf m primnumber == True = [head primnumber, primfactor ( m / head primnumber)]

npf :: (Int a) => a -> [a] -> Bool 
npf n (x:xs)
    | n `mod` x == 0 = True
    | otherwise = npf n xs 

但是我自己写的这一个部分在

primfactor :: (Int a) => a ->[a]
npf :: (Int a) => a -> [a] -> Bool 

依然会报错,这个错是:


E:\Haskell\Uebungsblatt_2_Aufgabe_1.hs:14:16: error:
    * Expected kind `* -> Constraint', but `Int' has kind `*'
    * In the type signature: primfactor :: (Int a) => a -> [a]
   |
14 | primfactor :: (Int a) => a ->[a]

   |                ^^^^^

E:\Haskell\Uebungsblatt_2_Aufgabe_1.hs:18:9: error:
    * Expected kind `* -> Constraint', but `Int' has kind `*'
    * In the type signature: npf :: (Int a) => a -> [a] -> Bool
   |
18 | npf :: (Int a) => a -> [a] -> Bool 

   |         ^^^^^
[Finished in 0.7s]
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler