列表中的相对素数

时间:2013-11-14 21:23:11

标签: scheme lisp racket

在球拍中,我如何使用filtergcd创建一个程序,其执行以下操作:

(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的每个数字。

1 个答案:

答案 0 :(得分:1)

只需使用relative primes的定义,解决方案自然而然:

(define (relative-primes lst num)
  (filter (lambda (e)
            <???>) ; see definition of relative primes
          lst))