#lang sicp (define (cons a b) (* (expt 2 a) (expt 3 b))) (define (car pair) (if (= (remainder pair 3) 0) (car (/ pair 3)) (log2 pair))) (define (cdr pair) (if (= (remainder pair 2) 0) (cdr (/ pair 2)) (log3 pair))) (define (log2 num) (define (aux num acc) (if (<= num 1) acc (aux (/ num 2) (+ acc 1)))) (aux num 0)) (define (log3 num) (define (aux num acc) (if (<= num 1) acc (aux (/ num 3) (+ acc 1)))) (aux num 0))