求两数的最大公约数,可采用欧几里得的方法:只要两数不相等,就反复用大数减小数,直到相等为止,此相等的数就是两数的最大公约数。
方法一:
1 #include<iostream> 2 #include<fstream> 3 using namespace std; //声明gcd函数,该函数用来计算两数的最大公约数 4 int gcd(int,int); 5 int main() 6 { 7 int x,y; 8 while(cin>>x>>y) 9 { 10 cout<<gcd(x,y)<<endl; 11 } 12 return 0; 13 } 14 int gcd(int x,int y) 15 { 16 while(x!=y) 17 { 18 if(x>y)x=x-y; 19 else y=y-x; 20 } 21 return x; 22 }
方法二:
1 #include<bits/stdc++.h>//表示包括编程中经常用到的头文件(有c和c++)
2 using namespace std;
3 typedef int i; //typedef用来为复杂的声明定义简单的别名,其中的i表示int(如定义longlong型:typedef long long ll;)
4 i gcd(i x,i y)
5 {
6 return y==0?x:gcd(y,x%y); //若y=0,则输出x,若不为零,则结合第6到11行进行gcd(y,x%y)中的运算,运用的是辗转相除法
7 }
8 i min(i x,i y)
9 {
10 return x<y?x:y; //若x<y,则输出x,否则输出y
11 }
12 int main()
13 {
14 i a,b;
15 cin>>a>>b;
16 i bns=0;
17 bns=gcd(a,b);
18 cout<<bns<<endl;
19 }