小编eLe*_*der的帖子

检查列表中的值以查看具有单个变量的Coprime

我在Haskell中实现此功能时遇到了一些麻烦.这是我到目前为止:

--Extend coprime to a function on lists:
--coprime_with n list = True exactly when n is coprime with
--every element of list.

coprime_with :: Integer -> [Integer] -> Bool
coprime_with a [] = False
coprime_with a (b:bs) = if ((coprime a b) == True) then 
                          (coprime_with a bs)
                        else False
Run Code Online (Sandbox Code Playgroud)

希望这不是太混乱.请不要只给我答案.只是让我知道我做错了什么以及如何解决它.谢谢!

编辑:好的,所以我想出来了!非常感谢您的回复.它非常快.我是Comp Sci专业,这是我的第一个学期.我的目标是实际学习,而不仅仅是通过它.感谢您的回复以及您的措辞.

我的问题是这样的:

coprime_with a [] = False
Run Code Online (Sandbox Code Playgroud)

什么时候应该这样:

coprime_with a [] = True
Run Code Online (Sandbox Code Playgroud)

现在它正常运作.Phew ...我觉得很愚蠢,我花了五个小时写这个功能,但至少我实际上学到了一些东西.再次感谢!

recursion haskell

1
推荐指数
1
解决办法
1045
查看次数

Haskell实现中国剩余定理的问题

所以我在尝试将中国剩余定理实现到Haskell时遇到了问题.到目前为止我有这个:

minv :: Integer -> Integer -> Integer
minv a m = let (1, x, _) = extGCD a m
           in x `mod` m


crt :: [Integer] -> [Integer] -> Integer
crt as ms = let
                    prod = product ms
                    big_m = [div prod i| i <- ms]
            in (zip as ms (\(ai,mi)) ((ai * big_m * (minv mi big_m)) `mod` prod))
Run Code Online (Sandbox Code Playgroud)

好的,所以我知道这个minv功能有效(我已多次测试过),但我无法使用该crt功能.所以这就是我想要做的:

我需要压缩列表asms在一起,然后应用二进制文件中的每一个,实际上认定中国剩余定理公式.但是我需要先处理二进制文件然后应用于`mod` prod我从所有二进制文件中获得的整数.

希望这会产生某种形式的意义.

提前致谢.

haskell crt

1
推荐指数
1
解决办法
559
查看次数

标签 统计

haskell ×2

crt ×1

recursion ×1