newcoder c:约数

题目描述

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;
}

猜你喜欢

转载自blog.csdn.net/Endeavor_G/article/details/85223542