#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int euclid_fun(int m ,int n)
{
if (n > m)
swap(m, n);
int r = m % n;
while(r != 0)
{
m = n;
n = r;
r = m % n;
}
return n;
}
int main(){
int m = 24;
int n = 30;
int gcd = euclid_fun(m,n);
cout << " the greatest common factor is : " << gcd << endl;
return 0;
}
#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}
int fuclid_fun(int &a, int &b)
{
if (b > a)
swap(a,b);
a = a % b;
if (a == 0){
return b;
}else {
b = b % a;
if ( b == 0)
{
return a;
}
else{
fuclid_fun( a, b);
}
}
}
int main(){
int a = 2166;
int b = 6099;
int gcd = fuclid_fun (a ,b);
cout << gcd << endl;
return 0;
}
Proof of validity[1]
The validity of the Euclidean algorithm can be proven by a two-step argument.[16] In the first step, the final nonzero remainder rN−1 is shown to divide both a and b. Since it is a common divisor, it must be less than or equal to the greatest common divisor g. In the second step, it is shown that any common divisor of a and b, including g, must divide rN−1; therefore, g must be less than or equal to rN−1. These two conclusions are inconsistent unless rN−1 = g.
To demonstrate that rN−1 divides both a and b (the first step), rN−1 divides its predecessor rN−2
- rN−2 = qN rN−1
since the final remainder rN is zero. rN−1 also divides its next predecessor rN−3
- rN−3 = qN−1 rN−2 + rN−1
because it divides both terms on the right-hand side of the equation. Iterating the same argument, rN−1 divides all the preceding remainders, including a and b. None of the preceding remainders rN−2, rN−3, etc. divide a and b, since they leave a remainder. Since rN−1 is a common divisor of a and b, rN−1 ≤ g.
In the second step, any natural number c that divides both a and b (in other words, any common divisor of a and b) divides the remainders rk. By definition, a and b can be written as multiples of c: a = mc and b = nc, where m and n are natural numbers. Therefore, c divides the initial remainder r0, since r0 = a − q0b = mc − q0nc = (m − q0n)c. An analogous argument shows that c also divides the subsequent remainders r1, r2, etc. Therefore, the greatest common divisor g must divide rN−1, which implies that g ≤ rN−1. Since the first part of the argument showed the reverse (rN−1 ≤ g), it follows that g = rN−1. Thus, g is the greatest common divisor of all the succeeding pairs:[17][18]
- g = gcd(a, b) = gcd(b, r0) = gcd(r0, r1) = … = gcd(rN−2, rN−1) = rN−1.
example
a = 1071 and b = 462
[1]. http://en.wikipedia.org/wiki/Euclidean_algorithm