PolymathREU-Walking-to-infi.../scheme/util.scm

44 lines
924 B
Scheme
Raw Permalink Normal View History

2020-07-17 22:03:58 -07:00
(define (square? n)
(let ((s (sqrt n)))
(= s (floor s))))
(define (prime? n)
(if (< n 2) #f
(let loop ((i 2))
(cond
((> (* i i) n) #t)
((zero? (remainder n i)) #f)
(else (loop (+ i 1)))))))
(define (square-free? n)
(if (< n 1) #f
(let loop ((i 2))
(cond
((> (* i i) n) #t)
((zero? (remainder n (* i i))) #f)
(else (loop (+ i 1)))))))
2020-07-13 09:06:43 -07:00
(define (fold f init seq)
(if (null? seq)
init
(fold f
(f (car seq) init)
(cdr seq))))
(define (range n)
(let loop ((i (- n 1)) (ls '()))
(if (< i 0) ls
(loop (- i 1) (cons i ls)))))
(define (compose f g)
(lambda (x) (f (g x))))
(define (repeated f n)
(let loop ((i 0) (func (lambda (x) x)))
(if (= i n)
func
(loop (+ i 1) (compose func f)))))
2020-07-17 22:03:58 -07:00
(define (digits n)
(length (string->list (number->string n))))