Filter 创建只有某些素数因子的数字流

Filter 创建只有某些素数因子的数字流,filter,stream,scheme,Filter,Stream,Scheme,我想取无限的数字流1,2,3,4。。。并对其进行过滤,使其仅包含素数因子为7和13的数字。(即7、13、49、91、169、343等) 我已经启动了下面的函数,但是我对如何正确地过滤出只有这些特定素数因子的数字感到困惑 (define function (stream-filter (lambda (x) (or (= (/ x 7) 1) (= (/ x 13) 1)

我想取无限的数字流1,2,3,4。。。并对其进行过滤,使其仅包含素数因子为7和13的数字。(即7、13、49、91、169、343等)

我已经启动了下面的函数,但是我对如何正确地过滤出只有这些特定素数因子的数字感到困惑

(define function
    (stream-filter
        (lambda (x)
            (or
                (= (/ x 7) 1)
                (= (/ x 13) 1)
                )
            )
        numbers
        )
    )

其中,流过滤器与SICP的功能相同

这里有一个想法:找到数字的基本因子,检查是否有除
7
13
以外的因子:

(define (factor number)
  (let loop ((divisor 2) (number number))
    (cond ((> (* divisor divisor) number) (list number))
          ((zero? (modulo number divisor))
           (cons divisor (loop divisor (/ number divisor))))
          (else (loop (add1 divisor) number)))))

(stream-filter
 (lambda (x)
   (null? 
    (filter (lambda (e) (not (or (= e 7) (= e 13))))
            (factor x))))
 numbers)

我是不是遗漏了什么,或者你能对数字进行模7或模13运算吗?