我需要在#lang racket中编写一个函数来确定正整数所具有的除数。 (例如:6有4个除数; 1,2,3,6)
到目前为止,我有:
(define(除以b)(if(= 0(modulo a b))#t #f))
我需要使用这个辅助函数来编写函数(divisors-upto n k),它计算n与1之间的除数数(因此它计算n的除数) 达到值k)。
答案 0 :(得分:1)
这是最简单的 1 ,for
循环,特别是for/fold
,假设您已经拥有divides
函数。
(define (divisors num)
(for/fold ([acc 0]
[n (in-range num)])
(if (divides n num) <acc+1> <acc>)))
基本上,您循环遍历列表,并保留累加器,并且只要数字可分,就递增累加器。看看您是否可以在上面的代码中填写<acc+1>
和<acc>
的表达式。
1 您也可以使用列表length
和filter
执行此操作。看看你是否能弄明白。