4.试除法求约数 约数

 1:试除法求一个数的所有约数

一个数的约数也是成对出现的,所以在枚举时也可以只枚举较小的那一个

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 vector<int> get_divisors(int n) { //求n的所有约数
 4     vector<int> res;
 5     for (int i = 1; i <= n / i; i++) { //时间复杂度sqrt(n)
 6         if (n % i == 0) {
 7             res.push_back(i);
 8             if (i != n / i) {
 9                 res.push_back(n / i);
10             }
11         }
12     }
13     sort(res.begin(), res.end());
14     return res;
15 }
16 int main() {
17     int n;
18     cin >> n;
19     while (n--) {
20         int x;
21         cin >> x;
22         vector<int> res = get_divisors(x);
23         for (int i = 0; i < res.size(); i++) {
24             cout << res[i] << " ";
25         }
26         cout << endl;
27     }
28     return 0;
29 }
原文地址:https://www.cnblogs.com/fx1998/p/13415272.html