在球拍中,我如何使用filter
和gcd
创建一个程序,其执行以下操作:
(list-of-numbers) number = > (list)
结果列表中包含列表中相对于单个列表的数字的数字?
编辑: 到目前为止,我已经提出了以下代码:
(define (coprime? list-of-num n)
(cond
[(empty? list-of-num) empty]
[else
(filter (lambda (num)
(= (gcd (first list-of-num) n) 1)) num))]))
但我完全迷失了,并意识到这有点乱。我的一般想法是创建一个布尔函数,只要(gcd number-from-list number)
等于1就返回#t,然后该过程过滤列表中导致#t的每个数字。
答案 0 :(得分:1)
只需使用relative primes的定义,解决方案自然而然:
(define (relative-primes lst num)
(filter (lambda (e)
<???>) ; see definition of relative primes
lst))