创建仅具有某些质因数的数字流



我想取数字 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 的函数相同。

这里有一个想法:找到数字的质因数并检查是否有除713以外的因数

(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)

相关内容

  • 没有找到相关文章

最新更新