题目描述
给出一些整数对,请求出这些整数对的最大公约数,并对这些最大公约数按从小到大的顺序排序输出
输入描述
输入包含n行(1<n<100),每行含两个数a和b(1<a,b<100000),用空格隔开
输出描述
对于上面所有行输入,将其最大公约数按照从小到大的顺序输出在一行
输入样例
12 35
77 91
123 789
24 28
64 112
1024 888
98 54
输出样例
1 2 3 4 7 8 16
#include <iostream>
#include <algorithm>
using namespace std;
int gcd(int da, int xiao){ // 求出2个数中的最大公约数
int temp;
while(xiao != 0){
temp = da % xiao;
da = xiao;
xiao = temp;
}
return da;
}
int main(){
int a, b;
int s[100]; // 输入包含n行(1<n<100)
int i = 0, j;
while(cin >> a >> b){ // 持续对 a 和 b进行赋值,当输入非int类型的变量时,会停止输入,结束循环
s[i] = gcd(a , b); // 调用gcd函数并把结果存入数组中
i++;
}
sort(s, s+i); // 对公约数进行从小到大排序,调用库中的排序方法
for(j = 0; j < i -1; j++){ // 遍历数组中存放的最大公约数
cout << s[j] << " "; // 在后面没有使用 endl ,代码则不会换行输出
}
cout << s[j] << endl;
return 0;
}
版权声明:本文为qq_44989881原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。