2016-11-22 11 views
0

私はSCHEME機能がセクシーですか? 1つのパラメータnをとり、nがセクシーな素数のペアの場合はtrueを返し、それ以外の場合はfalseを返します。また、SCHEME関数のsexy-primesは、整数nをパラメータとして取り、ペアのリストを返します。その差が6で、より小さい数がn以下である素数。SCHEMEにセクシーなプライムペアのストリームを書きます

セクシーなプライムペアのストリームを定義するにはどうすればよいですか?

(define (is-sexy? n) 
    (define (is-prime? x) 
    (define (is-prime?-aux x k) 
     (cond ((< x 1) #f) 
      ((= x k) #t) 
      (else 
      (if (= (remainder x k) 0) #f 
       (is-prime?-aux x (+ k 1)))))) 
    (cond ((= x 1) #t) 
      ((= x 2) #t) 
      (else (is-prime?-aux x 2)))) 
    (if (and (is-prime? n) 
      (or (is-prime? (- n 6)) (is-prime? (+ n 6)))) #t 
                 #f)) 

    (define (sexy-primes n) 
    (if (= n 0) '() 
     (if (is-sexy? n) (cons n (sexy-primes (- n 1))) 
      (sexy-primes (- n 1))))) 

答えて

0

これは動作します:

(define (sexyprimes-from k) 
    (if (is-sexy? k) (cons (cons k (+ k 6)) (delay (sexyprimes-from (+ k 1)))) 
    (sexyprimes-from (+ k 1)))) 
(define sexy-primes (sexyprimes-from 5)) 
関連する問題