You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Haskell中实现判断整数是否可被指定区间内的数整除

Haskell实现方案

你需要的功能可以直接利用Haskell内置的高阶函数实现,依靠惰性求值特性,效率和C语言的提前终止循环逻辑完全一致,不需要手写复杂的递归或if判断。

实现逻辑说明

你的核心需求是判断[rstart, rend]区间内是否存在任意整数可以整除number,Haskell的any函数天然匹配这个逻辑:它会遍历序列,找到第一个满足条件的元素就立刻返回结果,不会遍历后续所有元素,不存在额外性能开销。

代码实现

匹配原始需求(遍历[rstart, rend]区间)

dividesRange :: Integer -> Integer -> Integer -> Bool
dividesRange number rstart rend = any (\x -> number `mod` x == 0) [rstart .. rend]

对齐你提供的C代码逻辑

注意你给出的C代码里存在先执行rstart++再做整除判断的逻辑,实际遍历的是[rstart+1, rend]区间,要对齐这个行为只需要调整生成的区间即可:

dividesRange :: Integer -> Integer -> Integer -> Bool
dividesRange number rstart rend = any (\x -> number `mod` x == 0) [rstart+1 .. rend]

额外说明

上述实现用到的区间语法[a..b]是惰性生成的,不会提前把整个区间的整数都加载到内存里,即使区间范围很大也不会有额外的内存占用,性能和手写C循环的实现没有差异。


内容的提问来源于stack exchange,提问作者SourceCodeEngineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:54:08