算法笔记.求约数

代码实现:

#include
using namespace std;
#include
void check(int x)
{
    vector v;
    for(int i = 1;i<= x/i;i++)
    {
        if(x%i == 0) 
        {
            cout << i<<" ";
            v.push_back(i);
        }
    }
    
    for(int i = v.size()-1;i>=0;i--)
    {
        if(x/v[i] == v[i]) continue;
        cout << x/v[i]<<" ";
    }
    cout <>n;
    
    while(n--)
    {
        int x;
        scanf("%d",&x);
        check(x);
    }
    return 0;
}

注意:约数只需要枚举到\sqrt{x} ,对应的大于\sqrt{x}约数直接算出来,相同约数只取一个

你可能感兴趣的:(算法,笔记,c++)