我希望生成一个孪生素数流,使该流如下所示
((3 5) (5 7) (11 13) (17 19) ...) 诸若此类。我有一个函数,它生成一个质数流,一个函数将它们配对在一起。我困惑的地方是如何改变我的配对函数,以便只有孪生素数配对在一起。我的配对功能是:
(define (pairs s t)
(cons-stream
(list (stream-car s) (stream-car t))
(interleave
(stream-map (lambda (x) (list (stream-car s) x))
(stream-cdr t))
(pairs (stream-cdr s) (stream-cdr t)))))当前,当传入相同的质数流时,我会收到以下输出
((2 2) (2 3) (3 3) (2 5) (3 5) ...)发布于 2014-12-04 10:27:59
你只应该对相邻的素数:
(define (stream-zip s t)
(cons-stream
(list (stream-car s) (stream-car t))
(stream-zip (stream-cdr s) (stream-cdr t))))然后,你只把一对双胞胎排除在所有相邻的双胞胎之外:
(define (twin primes)
(stream-filter ...
(stream-zip primes (stream-cdr primes))))发布于 2014-12-04 02:37:13
在明显的位置添加一个(stream-filter (lambda (x) (= (- (cadr x) (car x)) 2)) ...)。
https://stackoverflow.com/questions/27285245
复制相似问题