2016-11-04 72 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

相關問題