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]