I hope someone has solution. It looks very odd to me. The function divides? is defined in
https://raw.githubusercontent.com/racket/math/master/math-lib/math/private/number-theory/divisibility.rkt #lang typed/racket/base (provide divides? coprime? pairwise-coprime? bezout) ;;; ;;; DIVISIBILITY ;;; (: divides? : Integer Integer -> Boolean) ; a divides b <=> exists unique k s.t. a*k=b (define (divides? a b) (cond [(zero? a) #f] [else (= (remainder b a) 0)])) 2015-08-24 12:41 GMT+02:00 Rickard Andersson <[email protected]> : > Hi, > > I noticed that the `divides?` function from math/number-theory seems to be > a huge bottleneck for whatever reason. > > This seems strange to me, but I figured I'd write to the list to see if > maybe there are trade-offs made that make sense mostly for big integers or > something. > > Example with (time): > > #lang racket/base > > (require (only-in math/number-theory divides?)) > > (define (divisible-by? x d) > (= (modulo x d) > 0)) > > (module+ main > (time > (for/sum ([x (in-range 3 500000000)]) > (if (3 . divides? . x) > x > 0))) ; cpu time: 96257 real time: 96166 gc time: 128 > (time > (for/sum ([x (in-range 3 500000000)]) > (if (x . divisible-by? . 3) > x > 0))) ; cpu time: 7277 real time: 7266 gc time: 0 > ) > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- Jens Axel Søgaard -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

