如何计算数字和数字列表之间的适当除数?

时间:2016-11-04 21:37:04

标签: functional-programming scheme racket

(define (proper-divisor? n m)
  (eq? (modulo n m) 0))

(define (1..10)
  list (iota 10 1))

(define (amount-of-proper-divisors n numbers)
  (length (filter (lambda (x) proper-divisor? n x) numbers)))

如何过滤掉不合适的除数? 尝试:

(filter (lambda (x) proper-divisor? n x) numbers))

ps.1:发现了一个类似的问题:Language Scheme: find the sum of proper divisors 哪个版本更好?将过滤器与谓词和列表生成器或链接问题中的解决方案放在一起?

1 个答案:

答案 0 :(得分:2)

问题似乎是你错过了一套parens:

(filter (lambda (x) (proper-divisor? n x)) numbers)
                    ^                   ^
                    here            and here

没有parens的表达:

(lambda (x) proper-divisor? n x)

与:

相同
(lambda (x) x)