about summary refs log tree commit diff
path: root/others/volume1/112.scm
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2017-02-22 14:51:37 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2017-02-22 14:51:37 +0700
commit7ebfa64719d4ac86b30075c65f21eafe9097853e (patch)
treecf9d59c492bd650258cf139d000d45fb6b8357fb /others/volume1/112.scm
parent7d19f480637e9e880b98dabfbcf8e885b0a2d3b9 (diff)
downloadcp-7ebfa64719d4ac86b30075c65f21eafe9097853e.tar.gz
Updare README.md
Diffstat (limited to 'others/volume1/112.scm')
-rw-r--r--others/volume1/112.scm12
1 files changed, 12 insertions, 0 deletions
diff --git a/others/volume1/112.scm b/others/volume1/112.scm
new file mode 100644
index 0000000..c03bfdc
--- /dev/null
+++ b/others/volume1/112.scm
@@ -0,0 +1,12 @@
+(define (sqr x) (* x x))
+(define (distance n)
+  (let distance-iter ((hi (inexact->exact (truncate (sqrt n)))) (i 2))
+    (cond ((= n 1) 0)
+           ((= i hi) 1)
+           ((= (remainder n i) 0) (begin (set! n (quotient n i))
+                                         (+ (distance-iter hi i) 1)))
+           (else (distance-iter hi (+ i 1))))))
+(let loop ((a (read)) (b (read)))
+  (unless (eof-object? a)
+    (format #t "~a\n" (distance (quotient (* a b) (sqr (gcd a b)))))
+    (loop (read) (read))))