-- Aug 25 In-Class Exercise
Scheme GCD:
(define (gcd u v) (if (= v 0) u (gcd v (modulo u v))))
Step 1:gcd(14 30)
if (= v 0) is not true, so result will be gcd 30 (mod of 14 and 30) = gcd (30 14)
Step 2: gcd(30 14)
if (= v 0) is not true, so we continue with gcd 14 (modulo 30 14) = gcd (14 2)
Step 3: gcd(14 2)
if (= v 0) is not true, so we continue with gcd 2 (modulo 14 2) = gcd (2 0)
Step 4: gcd (2 0)
if (= v 0) is true, so return U. answer: u = 2.
Prolog GCD:
gcd(U, V, U) :- V = 0.
gcd(U,V, X) :- not (V =0), Y is U mod V, gcd (V,Y,X).
Prolog is made of rules
|? - gcd(14, 30, 14) :- not (V =0), V is not 0 β Y is U mod V
Y = 14 mod 30, Y = 14, gcd(30, 14, X)
|? - gcd(14, 30, X) :- not (V =0), V is not 0 β Y is U mod V
Y = 14 mod 30, Y = 14, gcd(30, 14, X)
|? - gcd(30, 14, X) :- not (V =0), V is not 0 β Y is U mod V
Y = 30 mod 14, Y = 2, gcd(14, 2, X)
|? - gcd(14, 2, X) :- not (V =0), V is not 0 β Y is U mod V
Y = 14 mod 2, Y = 0, gcd(2, 0, X)
|? - gcd(2, 0, X) :- not (V =0), V is 0 so answer = 2
Scheme GCD:
(define (gcd u v) (if (= v 0) u (gcd v (modulo u v))))
Step 1:gcd(14 30)
if (= v 0) is not true, so result will be gcd 30 (mod of 14 and 30) = gcd (30 14)
Step 2: gcd(30 14)
if (= v 0) is not true, so we continue with gcd 14 (modulo 30 14) = gcd (14 2)
Step 3: gcd(14 2)
if (= v 0) is not true, so we continue with gcd 2 (modulo 14 2) = gcd (2 0)
Step 4: gcd (2 0)
if (= v 0) is true, so return U. answer: u = 2.
Prolog GCD:
gcd(U, V, U) :- V = 0.
gcd(U,V, X) :- not (V =0), Y is U mod V, gcd (V,Y,X).
Prolog is made of rules
|? - gcd(14, 30, 14) :- not (V =0), V is not 0 β Y is U mod V
Y = 14 mod 30, Y = 14, gcd(30, 14, X)
|? - gcd(14, 30, X) :- not (V =0), V is not 0 β Y is U mod V
Y = 14 mod 30, Y = 14, gcd(30, 14, X)
|? - gcd(30, 14, X) :- not (V =0), V is not 0 β Y is U mod V
Y = 30 mod 14, Y = 2, gcd(14, 2, X)
|? - gcd(14, 2, X) :- not (V =0), V is not 0 β Y is U mod V
Y = 14 mod 2, Y = 0, gcd(2, 0, X)
|? - gcd(2, 0, X) :- not (V =0), V is 0 so answer = 2