题目描述
Actci上课睡了一觉,下课屁颠屁颠的去找数学老师补课,问了老师一个题目:
给出两个数a,b,问a和b的全部公约数是什么?
数学老师一看这道题太简单了,不屑回答,于是就交给了你。
输入描述:
一行两个数a,b.
输出描述:
a和b的全部公约数,每个数字之间空格隔开。
#include<bits/stdc++.h>
#define INF 0x3fffffff
#define ll long long
#define mem(ar,num) memset(ar,num,sizeof(ar))
#define me(ar) memset(ar,0,sizeof(ar))
#define lowbit(x) (x&(-x))
#define IOS ios::sync_with_stdio(false)
#define DEBUG cout<<endl<<"DEBUG"<<endl;
using namespace std;
ll a,b;
int main(){IOS;
cin>>a>>b;
ll da=__gcd(a,b);
set<ll>st;//set集合去重,排序,很好
for(ll i=1;i*i<=da;i++){
if(da%i==0){
st.insert(i);//因数都丢进去,自动去重排序
st.insert(da/i);
}
}
for(set<ll>::iterator i=st.begin();i!=st.end();i++) {
cout<<*i<<" ";
}
return 0;
}