试除法求约数

问题

https://www.acwing.com/problem/content/871/

分析

约数指可以整除被除数的数,通过 n % i == 0 判断结束后加到 vector 数组中即可。对于频繁向队尾加入数据的使用 vector 中的 push_back() 会相当方便

代码

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std ;

vector<int> get_divisors(int a)
{
    vector<int> res ;
    for(int i = 1 ; i <= a / i ; i ++)
    {
        if(a % i == 0) res.push_back(i) ;
        if(i != a / i) res.push_back(a / i) ;
    }
    
    sort(res.begin(), res.end()) ;
    
    return res ;
}

int main()
{
    int n ;
    cin >> n ;
    while(n --)
    {
        int a ;
        scanf("%d", &a) ;
        auto res = get_divisors(a) ;
        for(int i = 0 ; i < res.size() ; i ++)
            printf("%d ", res[i]) ;
        puts("") ;
    }
}
上一篇:使用了synchronized,竟然还有线程安全问题!


下一篇:Vector扩容倍数后的数学推导