如何在Haskell中遍历两个列表并逐元素判断整除关系?
问题解决:根据位置序号的整除性生成布尔列表
需求明确
给定列表A,生成布尔列表C,其中C的每个元素对应A中同位置的元素是否能被从1开始的位置序号整除(即A的第n个元素对应除数为n,对应无限列表B的第n个元素)。
示例验证
以A = [3,5,6,8,9]为例:
- 第1个元素3 ÷ 1 → 整除 → True
- 第2个元素5 ÷ 2 → 余1 → False
- 第3个元素6 ÷ 3 → 整除 → True
- 第4个元素8 ÷ 4 → 整除 → True
- 第5个元素9 ÷ 5 → 余4 → False
最终C = [True, False, True, True, False]
代码实现
Python 写法
基础循环版
A = [3,5,6,8,9] C = [] # enumerate(start=1) 直接获取从1开始的位置序号 for position, num in enumerate(A, start=1): C.append(num % position == 0) print(C) # 输出: [True, False, True, True, False]
列表推导式(简洁版)
A = [3,5,6,8,9] C = [num % position == 0 for position, num in enumerate(A, start=1)] print(C)
JavaScript 写法
const A = [3,5,6,8,9]; // 数组索引从0开始,因此位置序号为 idx + 1 const C = A.map((num, idx) => num % (idx + 1) === 0); console.log(C); // 输出: [true, false, true, true, false]
关键逻辑说明
- 核心是将
A中每个元素的**位置序号(从1开始)**作为除数,对应无限列表B的元素值 - 利用取模运算
num % position判断整除性:结果为0则返回True,否则返回False
内容的提问来源于stack exchange,提问作者Aavesh
相关产品推荐
相关产品推荐

