PasteRack.org
Paste # 77336
2017-10-11 09:09:07

Fork as a new paste.

Paste viewed 9 times.


Embed:

  1. #lang typed/racket
  2.  
  3. (: calculate_denominators (-> Integer Integer (Listof Integer) (Listof Integer)))
  4. (define (calculate_denominators n amount acc)
  5.   (cond
  6.     [(< (/ amount n) 100000) acc]
  7.     [else
  8.       (let* ([add_to_acc : Integer (round (/ amount n))]
  9.              [new_acc : (Listof Integer) (if (and (= (remainder amount n) 0) (= (remainder add_to_acc 50000) 0)) (append acc (list add_to_acc)) acc)])
  10.            (calculate_denominators (+ n 1) amount new_acc))]))
  11.  
  12.  
  13. (module* main #f
  14.     (displayln "500000 :")
  15.     (displayln (calculate_denominators 1 500000 (make-list 0 0)))
  16.     (displayln "1000000 :")
  17.     (displayln (calculate_denominators 1 1000000 (make-list 0 0)))
  18.     (displayln "2000000 :")
  19.     (displayln (calculate_denominators 1 2000000 (make-list 0 0)))
  20.     (displayln "5000000 :")
  21.     (displayln (calculate_denominators 1 5000000 (make-list 0 0)))
  22.     (displayln "7000000 :")
  23.     (displayln (calculate_denominators 1 7000000 (make-list 0 0)))
  24.     (displayln "13000000 :")
  25.     (displayln (calculate_denominators 1 13000000 (make-list 0 0))))

=>