辗转相除法

 1 #include <cstdio>
 2 int gcd(int a,int b)
 3 {
 4     return b==0?a:gcd(b,a%b);
 5 }
 6 int gcd1(int a,int b)
 7 {
 8     if(a==0)return b;
 9     if(b==0)return a;
10     if(a<b) return gcd(a,b-a);
11     else return gcd(b,a-b);
12 }
13 int gcd3(int a,int b)
14 {
15     while(a!=0&&b!=0){
16         if(a<b) b=b-a;
17         else {int t;t=a;a=b;b=t-b;}
18     }
19     if(a==0)return b;
20     else return a;
21 }
22 int main(){
23     int a;int b;
24     while(scanf("%d%d",&a,&b)!=EOF){
25         printf("%d  %d  %d
",gcd1(a,b),gcd(a,b),gcd3(a,b));
26     }
27 
28     return 0;
29 }
30 #include<stdio.h>
31 int main()
32 {
33     int a,i,b,s,c,max,min,d;
34     while(scanf("%d%d",&a,&b)!=EOF)
35     {
36         if(a<b)
37         {
38             s=a;
39             a=b;
40             b=s;
41         }
42         if(b==0&&a!=0)
43             printf("%d %d
",0,b);
44         if(a==b)
45             printf("%d %d
",a,b);
46         max=a;
47         min=b;
48         if(a>b&&b!=0)
49         {
50             while(a!=0&&b!=0)
51             {
52                 c=a;
53                 a=a%b;
54                 if(a!=0)
55                 {
56                     c=a;
57                     b=b%a;
58                 }
59                 if(b!=0)
60                 {
61                     c=b;
62                 }
63             }
64             printf("%d %d
",c,max*min/c);
65         }
66     }
67     return 0;
68 }
原文地址:https://www.cnblogs.com/Wade-/p/6160439.html