1.33 (过滤累积和 求区间内所有素数之和)

Posted ...............洋葱的秋秋空间........

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.33 (过滤累积和 求区间内所有素数之和)相关的知识,希望对你有一定的参考价值。

(define (filtered-accumulate filter? combiner null-value term a next b)
  (define (iter a result)
    (cond ((> a b) result)
          ((filter? a) (iter (next a)
                         (combiner (term a) result)))
          (else (iter (next a)
                      result))))
  (iter a null-value))

(define (smallest-divisor n)
  (find-divisor n 2))
 
(define (find-divisor n test-divisor)
  (cond ((> (square test-divisor) n) n)
        ((divides? n test-divisor) test-divisor)
        (else (find-divisor n (+ test-divisor 1)))))
 
(define (divides? a b)
  (= (remainder a b) 0))
 
(define (prime? n)
  (if (< n 2)
      #f
      (= n (smallest-divisor n))))
 
(define (square x)
  (* x x))

(define (primes-sum a b)
  (filtered-accumulate prime?
            +
            0
            (lambda (x) x)
            a
            (lambda (x) (+ x 1))
            b))

(primes-sum 1 10)

  

以上是关于1.33 (过滤累积和 求区间内所有素数之和)的主要内容,如果未能解决你的问题,请参考以下文章

筛素数,求区间内素数个数

求1到100以内所有素数之和(c语言)

6-1 使用函数求素数和 (20分)

吉比特_笔试_区间内素数个数

求指定整数范围内的素数之和

PTA 6-1 使用函数求素数和