辗转相除法

int Factor(int x, int y) {
    int r = y;
    while(x % y) {
        r = x % y;
        x = y;
        y = r;
    }
    return r;
}

如果数据有零的话,还是需要自己手动控制一下;


这个求最大公约数的方法必须掌握;

举例 99  121

121 - 99 = 22 ;

99 - 22 = 77 ;

77 - 22 = 55 ;

55 - 22 = 33 ;

33 - 22 = 11 ;

22 - 11 = 11 ;

最大公约数为 : 11 ;

下面是一个我比较喜欢的一个辗转相除法:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int  main()
 6 {
 7     int x = 99,y = 121,x1,y1,r;
 8         x1 = x;
 9         y1 = y;
10     while( x1 % y1)
11     {
12         r = x1 % y1;
13         x1 = y1;
14         y1 = r;
15     }
16     cout<<y1<<endl;
17         return 0;
18 }

2020-01-11

原文地址:https://www.cnblogs.com/2015-16/p/12180115.html