diff options
Diffstat (limited to 'ee1301/wk3/lab3/gcd.cpp')
-rw-r--r-- | ee1301/wk3/lab3/gcd.cpp | 25 |
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'); + } |