2016-11-04 34 views
1
(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 哪个版本好?把一个谓词和列表生成器的过滤器或解决方案放在链接的问题中?

+0

使用'='来比较两个数字(不是'只适用于fixnums的'eq?')。 – soegaard

回答

2

这个问题似乎是你缺少了一组括号中:

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

表达没有括号:

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

是一样的:

(lambda (x) x) 
+0

是否有任何工具会显示此类错误?这是一个静态的语义错误类型? – X10D

相关问题