[华为机试练习题]55.最大公约数 & 多个数的最大公约数

时间:2023-03-09 00:07:05
[华为机试练习题]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;
}