[华为机试练习题]55.最大公约数 & 多个数的最大公约数
题目
描写叙述:
输入2个数字,最后输出2个数字的最大公约数
题目类别:
位运算
难度:
0基础
执行时间限制:
无限制
内存限制:
无限制
阶段:
入职前练习
输入:
2个整数
输出:
输出数字1和2的最大公约数
例子输入:
2 3
例子输出:
1
代码
/*---------------------------------------
* 日期:2015-07-05
* 作者:SJF0115
* 题目:最大公约数
* 来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include <vector>
using namespace std;
// 最大公约数
int GCD(int a,int b){
if(b == 0){
return a;
}//if
return GCD(b,a%b);
}
int main(){
int a,b;
//freopen("C:\\Users\\Administrator\\Desktop\\c++.txt","r",stdin);
while(cin>>a>>b){
cout<<GCD(a,b)<<endl;
}//while
return 0;
}
题目 [多个数的最大公约数]
题目:
多个数的最大公约数
描写叙述:
输入一组正整数(数量小于20),输出其最大公约数。
输入:
121 33 44 11 1111
输出:
11
基本思路:
从第一个数開始。和第二个数比較找它两的最大公约数。然后找出的最大公约数和第三个数比較,依次类推
代码
/*---------------------------------------
* 日期:2015-07-05
* 作者:SJF0115
* 题目:多个数的最大公约数
* 来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include <vector>
using namespace std;
// 最大公约数
int GCD(int a,int b){
if(b == 0){
return a;
}//if
return GCD(b,a%b);
}
int main(){
int n;
//freopen("C:\\Users\\Administrator\\Desktop\\c++.txt","r",stdin);
while(cin>>n){
int num,result;
for(int i = 0;i < n;++i){
cin>>num;
if(i == 0){
result = num;
}//if
else{
result = GCD(result,num);
}//else
}//for
cout<<result<<endl;
}//while
return 0;
}