aboutsummaryrefslogtreecommitdiffstats
path: root/ee1301/wk3/lab3/gcd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ee1301/wk3/lab3/gcd.cpp')
-rw-r--r--ee1301/wk3/lab3/gcd.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/ee1301/wk3/lab3/gcd.cpp b/ee1301/wk3/lab3/gcd.cpp
index 435fd07..e9c1801 100644
--- a/ee1301/wk3/lab3/gcd.cpp
+++ b/ee1301/wk3/lab3/gcd.cpp
@@ -3,7 +3,7 @@
using namespace std;
int GCD(int a, int b) {
- int gcd=0;
+ int gcd=1;
a=abs(a); b=abs(b);
if (a>b) {
//do nothing
@@ -11,15 +11,26 @@ int GCD(int a, int b) {
if (b>a) {
int foo=a; a=b; b=foo;
} else {
- return 1;
+ return -1;
}
}
- gcd=(a/b)+(a%b);
- return gcd;
+ gcd=(a%b);
+ while (gcd!=0) {
+ return GCD(b,gcd);
+ }
+ return b;
+
}
int main () {
int a=0, b=0;
- cout << "Enter two integers: ";
- cin >> a, b;
- cout << GCD(a,b) << endl;
+ char cont;
+ do {
+ cout << "enter two integer values: ";
+ cin >> a >> b;
+ cout << "greatest common divisor is: " << GCD(a,b) << endl;
+ cout << "continue? (y/n): ";
+ cin >> cont;
+ cout << endl;
+ } while (cont!='n');
+
}