寻找除数的数量

时间:2017-09-14 14:04:47

标签: count integer scheme racket factors

我需要在#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)。

1 个答案:

答案 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 您也可以使用列表lengthfilter执行此操作。看看你是否能弄明白。