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))))
|